I know that at least one of the changes in C++11 that will cause some old code to stop compiling: the introduction of explicit operator bool()
in the standard l
How is the introduction of explicit conversion operators a breaking change? The old version will still just be as "valid" as before.
Yes, the change from operator void*() const
to explicit operator bool() const
will be a breaking change, but only if it is used in a way that is wrong in and out of itself. Conforming code won't be broken.
Now, another breaking change is the banning of narrowing conversions during aggregate initialization:
int a[] = { 1.0 }; // error
Edit: Just rememberer, std::identity
template
struct identity{
typedef T type;
};