Пользовательские атрибуты в C++11?
Есть ли способ создать пользовательские атрибуты в C++11 или более поздней версии?
Например,
[[noreturn]] void exit();
это определенный C++11 атрибут компилятора.
Я хотел бы определить что-то вроде:
[[comingsoon]] int function(int);
Есть ли механизм для этого?
Изменить: я должен отметить, что я использую Clang.
2 ответа
Язык не позволяет добавлять атрибуты.
Конечно, если вы используете Clang, вы можете отредактировать источник Clang и добавить любые атрибуты, которые вам нравятся.
Пока невозможно определить пользовательские атрибуты.
Насколько я знаю, нет никакой информации о том, планируется эта функция или нет. Однако посмотрите этот ответ на часто задаваемые вопросы от Страуструпа: https://isocpp.org/wiki/faq/cpp11-language-misc, особенно эту часть:
Одним из запланированных применений атрибутов является улучшенная поддержка OpenMP. Например:
for [ [ omp::parallel() ] ] (int i=0; i<v.size(); ++i) {
// ...
}
Это может означать, что они планируют позволить программисту определять свой собственный атрибут. Подожди и посмотри.