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++.
Specialization without repeating all the implementation
Concept based overloading on array views in C++03
Restricting function template type deduction
Function declaration inside a function definition
Negative and positive floating point zeros
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