Как можно объявить operator()
лямбда как noreturn
?
Ideone принимает следующий код:
#include <cstdlib>
int main() {
[]() [[noreturn]] { std::exit(1); }();
return 0;
}
Clang 3.5 отклоняет его:
error: 'noreturn' attribute cannot be applied to types
Вы можете попробовать его в godbolt: http://goo.gl/vsuCsF
Какой из них прав?
Обновить: соответствующие стандартные разделы выглядят как 5.1.2.5, 7.6.3, 7.6.4, но после прочтения это все равно не на 100% ясен мне (i), что такое правильное поведение, (ii) как отметить оператор() лямбда как noreturn
.