Как проверить во время компиляции, если может быть оценена постоянная функция?C++

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

Сообщение Anonymous »

Я пишу функцию, которая для цели этого вопроса похожа на std :: format , в этом std :: format ("{}") не удастся при сборе, в то время как std :: format ("{}", 1) Компонент. std :: format ("{}") ; Вместо этого я хочу, чтобы это была ошибка во время компиляции, и это текущее поведение. < /p>
Как я могу обеспечить это поведение не регрессирует?

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

#include 

template
concept FormatMissingArgumentCompiles = requires { std::format("{}"); };

// This check incorrectly states that 'Format missing argument compiles'
static_assert(!FormatMissingArgumentCompiles, "Format missing argument compiles");

int main() {}
Однако кажется, что std :: format ("{}") является хорошо сформированным выражением , если не оценивается и требует не оценивает свои аргументы (https://en.cppreference.com/w/cpp/langu ... xpressions).образно Construction of std :: format ("{}") плохо сформирована?

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

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

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

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

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

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

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