Когда тип становится завершенным?C++

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

Сообщение Anonymous »

Следует ли отклонить следующую программу? Clang, кажется, принимает это.

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

template
concept c = requires { T::n; };
struct z;
constexpr bool b(auto...) { return c; }
struct z { int n; };
static_assert(not b()); // clang ok, gcc nope, msvc nope
К моменту вычисления b() шаблон b будет неявно удален, и тип z будет завершен. Однако выражение c внутри b не зависит ни от одного из параметров шаблона b. Итак, я думаю, вопрос сводится к тому, следует ли разрешать c при определении шаблона b или при его создании.
Демо< /п>

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-complete
Ответить

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

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

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

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

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