Почему концепции 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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