The SD-6 draft has [3.3.6] Example
This demonstrates a way to use the attribute [[deprecated]] only if it is available. #ifdef __has_cpp_attribute # if __has_cpp_attribute(deprecated) # define ATTR_DEPRECATED(msg) [[deprecated(msg)]] # else # define ATTR_DEPRECATED(msg) # endif #endif This leaves ATTR_DEPRECATED undefined if the compiler doesn't support the __has_cpp_attribute macro, is that intended? Unless the idea is that some other method would be used to decide if it's available, it should be something like: #ifdef __has_cpp_attribute # if __has_cpp_attribute(deprecated) # define ATTR_DEPRECATED(msg) [[deprecated(msg)]] # endif #endif #ifndef ATTR_DEPRECATED(msg) # define ATTR_DEPRECATED(msg) #endif Would it also be useful to mention that the grammar term "attribute-token" allows scoped attributes, such as foo::bar, so that non-standard attributes can be tested the same way? _______________________________________________ Features mailing list [email protected] http://www.open-std.org/mailman/listinfo/features
