http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60512
Bug ID: 60512 Summary: would be useful if gcc implemented __has_feature similary to clang Product: gcc Version: unknown Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: eteran at alum dot rit.edu I was recently thinking about how GCC sets __cplusplus to 201103L when -std=c++11 yet doesn't (and may not ever) fully support every single corner case of c++11. I agree with the notion that __cplusplus == 201103L is a statement of intent, not 100% conformance. But how should developers write code that attempts to use features which aren't necessarily implemented yet, but may be in the near future or other compilers. It occurred to me that the ideal solution may not be to test __cplusplus at all, but instead to test for specific features. I find that that clang's approach to this seems to hit the sweet spot. I'm sure the GCC folk are aware of the feature, but I'll reiterate for reference. In clang: "[This] function-like macro take a single identifier argument that is the name of a feature. __has_feature evaluates to 1 if the feature is both supported by Clang and standardized in the current language standard or 0 if not" So while GCC doesn't support C++11 attributes yet, we could still code for it today wrapping it like so. #if __has_feature(cxx_attributes) #endif if it also supported the __has_feature (and family) suite of macros. Perhaps this macro is mostly of interest to library writers and not a huge deal to most developers, but I believe that it would be a tool that is *very* useful when it turns out that you do need it.