On 12 October 2016 at 12:51, Aaron Ballman <aa...@aaronballman.com> wrote:
> 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).

Indeed, and I wondered if that's the intention. My version would still
allow that, by adding an #else branch to the #ifdef. I don't know if
SD-6 (which is all about portable ways to detect such things) wants to
show/suggest/encourage that though :-)
_______________________________________________
Features mailing list
Features@isocpp.open-std.org
http://www.open-std.org/mailman/listinfo/features

Reply via email to