Date: Wed, 12 Oct 2016 11:55:01 +0100
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?
[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?
Received on 2016-10-12 12:55:24