http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49399
--- Comment #2 from Jarryd Beck <jarrydb at cse dot unsw.edu.au> 2011-06-14 11:52:58 UTC --- By works fine I mean that the code compiles, and when it runs, the program returns the number 4. Maybe I'm misunderstanding how this is all supposed to work and something has changed in the spec meaning that this is now broken. However that would mean boost is broken too (quite possible). It comes from BOOST_MPL_HAS_XXX_TRAIT_DEF. They use it to work out if a class has a particular member defined. It has been working fine up until recently when it broke with C++0x.