char*> is explicitly instantiated in some translation unit
http://eel.is/c++draft/temp#over-5.sentence-4
Правильно ли я понимаю, что следующий код ill-formed по стандарту?
template<typename T>
void visit(T);
void f()
{
visit(1);
visit(1.2);
visit("asd");
}
template<typename T>
void visit(T){}
В 17-м стандарте формулировка была немного другая:
The program will be ill-formed unless a specialization for f<const char*>, either implicitly or explicitly generated, is present in some translation unit.
В одном из комментариев на SO сказали что в C++20 это "пофиксили", но я не нашел никаких пояснений по данному вопросу. Что именно пофиксили и сделал ли этот "фикс" код выше ill-formed.
Чисто интуитивно (и по другим пунктам), считаю что код выше - ок, но данная строчка сильно смущает, не очень понимаю что конкретно она означает
Обсуждают сегодня