On Wed, Oct 12, 2016 at 6:55 AM, Jonathan Wakely <c...@kayari.org> wrote:
> 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

I think your modifications would be reasonable, though there are other
methods to decide if it's available (such as checking compiler
macros).

> 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?

Yes, I think it would be useful.

~Aaron
_______________________________________________
Features mailing list
Features@isocpp.open-std.org
http://www.open-std.org/mailman/listinfo/features

Reply via email to