Пользовательские атрибуты в 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) {
    // ...
}

Это может означать, что они планируют позволить программисту определять свой собственный атрибут. Подожди и посмотри.

Другие вопросы по тегам