Я пишу функцию, которая для цели этого вопроса похожа на 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 std :: format ("{}") плохо сформирована? Я не ищу способ сделать сбой компиляции, если пользователь записывает std :: format ("{}") - у меня это есть. Я хочу, чтобы компиляция не удалась, если написание std :: format ("{}") не сделает сбой компиляции.
Подробнее здесь:
https://stackoverflow.com/questions/796 ... -evaluated