Я знаю, что атрибуты в стиле C ++ 11 поддерживают определенные производителем c атрибуты, которым предшествует пространство имен. И G CC, и Clang поддерживают различные атрибуты с префиксом gnu::
(g cc и clang) или clang::
(только clang), что соответствует эквивалентному синтаксису __attribute__((...))
.
Документация для MSV C атрибутов показывает, что он поддерживает стандартные атрибуты, а также атрибут gsl::
, но не упоминает об обратной совместимости для __declspec
атрибутов.
Я бы ожидал, что что-то вроде __declspec(noinline)
будет иметь атрибутное представление [[msvc::noinline]]
, но я не могу найти никакой документации по этому поводу.
Итак, мой вопрос, есть ли MSV C поддерживать __declspec
как атрибуты стиля C ++ 11?
Если нет, может ли кто-нибудь знать, что они этого не делают? Исходное обоснование атрибутов C ++ заключалось в том, чтобы абстрагироваться от различных специфичных для компилятора c __attribute__
и __declspec
функций, поэтому было бы странно, если бы он по-прежнему не поддерживался через 9 лет после стандартизации.