Внеклассовое определение ограниченной функции-членаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Внеклассовое определение ограниченной функции-члена

Сообщение Anonymous »

Возникли проблемы с поиском синтаксиса для подъема ограниченной функции-члена за пределы ее класса, которым GCC доволен. На данный момент я начинаю думать, что это ошибка GCC.

Код: Выделить всё

struct S {
template
static constexpr bool some_check = true;

template
requires some_check
void foo(Idx);
};

template
requires S::template some_check
void S::foo(Idx idx) {}
Clang принимает его, но не GCC:

Код: Выделить всё

$ g++ -std=c++20 test.cpp
test.cpp:12:6: error: no declaration matches ‘void S::foo(Idx)’
12 | void S::foo(Idx idx) {}
|      ^
test.cpp:7:10: note: candidate is: ‘template  requires  some_check void S::foo(Idx)’
7 |     void foo(Idx);
|          ^~~
test.cpp:1:8: note: ‘struct S’ defined here
1 | struct S {
|        ^
Правильна ли эта программа?

Подробнее здесь: https://stackoverflow.com/questions/798 ... r-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»