Почему концепции C++ не могут использовать простое требование для проверки существования вложенного типа?C++

Программы на C++. Форум разработчиков
Anonymous
Почему концепции C++ не могут использовать простое требование для проверки существования вложенного типа?

Сообщение Anonymous »

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

template 
concept HasInner = requires { T::inner; };

void foo(HasInner auto x) { return; }
struct Test { using inner = int; };

int main()
{
foo(Test());
}
Почему этот код не может быть скомпилирован? Является ли внутренний_тип::type; недопустимым выражением?
Я знать концепцию HasInner = требует { typename T::inner; }; все в порядке. Но я хочу знать, почему первый вариант не подходит.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... ype-exists

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