Следующий фрагмент кода:
struct a
{
[[nodiscard]] friend int b();
};
Выдает эту ошибку при компиляции на clang++ (trunk 342102)
с -std=c++17
:
<source>:3:5: error: an attribute list cannot appear here
[[nodiscard]] friend int b();
^~~~~~~~~~~~~
Удаление friend
или добавление тела к b
предотвращает ошибку.
g++ (trunk)
прекрасно компилирует код.
Живой пример с Godbolt: https://gcc.godbolt.org/z/ttTDuZ
Является ли этоclang++
ошибка ?Или в Стандарте есть какое-то правило, которое делает этот код некорректным?
Если clang++
правильно, то как правильно пометить функцию-член friend
как [[nodiscard]]
?