http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51705
--- Comment #11 from Ed Schouten <ed at 80386 dot nl> 2011-12-29 22:40:26 UTC --- But this has nothing to do with FreeBSD specifically. It will apply to basically any operating system in the future. Say, GCC 4.8 (late 2012?) will support [[noreturn]] properly and some OS vendor decides to start using it by the year 2016 in its header files. That will still prevent you from compiling GCC 4.7 then, in case some piece of software depends on it. In the year 2016, OS vendors will simply expect they can do the following without causing any negative side-effects. #if defined(__STDC__) && __STDC_VERSION__ >= 201112L _Noreturn #if defined(__cplusplus) && __cplusplus >= 201103L [[noreturn]] #endif void exit(int); Simply because C++11 is the standard that introduced it. I _really_ think you guys are doing a good job with C++11 and there's _nothing_ wrong with the compiler. The issue is that forcing the compiler to expose C++11 support during its own compilation phase is not conservative.