В ложном ветви `Если ContexPR <за пределами шаблона, являются ли тела, вызванные функциями шаблона, созданными или нет?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 В ложном ветви `Если ContexPR <за пределами шаблона, являются ли тела, вызванные функциями шаблона, созданными или нет?

Сообщение Anonymous »

Общая мудрость состоит в том, что если onstexpr не обладает магическими способностями за пределами шаблона или если условие не зависит от параметра шаблона. Во -первых, [basic.def.odr]/12 говорит, что сущности, используемые в False If contexpr . />

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

template 
int f()
{
T *ptr;
return 0;
}

template 
void g()
{
int x = T::x;
}

int main()
{
if constexpr (false)
{
int x = f();  // only clang 19+ errors
g();            // ok
}
}
Здесь вызов g () принимается всеми компиляторами, в то время как вызов f () отклоняется только Clang 19+.
Так что эта программа верна или нет? Для меня кажется, что оба звонка должны компилировать, поэтому мы сообщили об ошибке Clang, но теперь им говорят, что это работает как задумано.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... called-tem
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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