Programming (on C++)

Back to main page

Background

My first contact with computers was somewhere in 1990 with a 12MHz 286 computer and the DOS operating system. I wrote my first program in 1992 in Basic and soon happily switched to Quick Basic. I attended a course on C++ in 1994 and started using it. Somewhere in 1996 I started using x86 assembly language for performance critical parts. I then spent many years building low level graphics, mouse, keyboard and soundcard libraries. In 2001 I had to switch away from DOS to Windows. I then learned enough Windows to make things the way they were in DOS. In 2002 I entered a university to study computer science. Since then I have learned lots about formalism, data structures, algorithms, style and object-oriented design. In late 2005, after reading Andrei Alexandrescu's "Modern C++ design" I found myself inspecting the wonderful world of template meta-programming. The insights of this book opened C++ in a completely new way to me, really making generic programming worth its name. Currently, I am very excited about the next C++ standard C++09 that is to solve all my problems with the current C++.

Texts

Specialization without repeating all the implementation

Concept based overloading on array views in C++03

Restricting function template type deduction

Precondition checking

Tricks

Late binding in compile time

Function declaration inside a function definition

Negative and positive floating point zeros

Compiler bugs

Here are all the compiler bugs I have come across. They are all errors that I have first found from my code that I haven't been able to find any explanation for. After this I have reduced the problem to its minimal form so it has been easy to verify that it is really a bug. The bugs have been classified by the version of Visual Studio I have found them from. All of the bugs in this list have been fixed in later versions. Although I have not tried, I'd assume that the bugs in the later versions are also present in the former versions.

Microsoft Visual C++ 2008 SP1

Comeau C++ compiler 4.2.44 - 4.3.10.1 Beta

Microsoft Visual C++ 2005 SP1

(Microsoft argues that while this will be the behaviour in C++0x, it is not required behaviour in C++03. Agreed, but clearly it should work the same way it is going to work in C++0x.)

Microsoft Visual C++ 2005

Microsoft Visual C++ 2003

Microsoft Visual C++ 6.0

Links

The C++ standards committee

Test Drive Comeau C/C++ Online

Qt

Boost