Ошибка неконтексара при попытке отформатировать std :: format_string с использованием std :: formatC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка неконтексара при попытке отформатировать std :: format_string с использованием std :: format

Сообщение Anonymous »

Я работал над тем, чтобы реализовать форматирование строк в свой журнал, используя std :: format () .
Это функция, которую я написал для форматирования сообщений журнала. Он просто берет сообщение, форматирует его и передает его версии функции log () , которая просто принимает Const char*, и выполняет всю реальную работу в журнале.

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

template
void log(const LogLevel logLevel, std::format_string message, Args&&... args) {
log(logLevel, std::format(message, std::forward(args)...));
}
< /code>
Тем не менее, этот код не скомпилируется, и я встречаю эту ошибку < /p>
error: call to non-‘constexpr’ function ‘std::string std::format(format_string, _Args&& ...)
Вся информация, которую я обнаружил в Интернете, сказала мне, что любая строка, отформатированная с использованием std :: format () , должна быть ConstexPR. Все строки, которые я передавал в функцию журнала, являются твердыми постоянными, поэтому я не думаю, что мои существующие вызовы функции-это то, что заставляет мой код не компилировать. Примеры таких вызовов можно увидеть ниже. < /P>
// This function just passes its arguments to log()
// shorthand for writing Logger::log(LogLevel::Info, "Test {}", 1);
Logger::info("Test {}", 1);

// No arguments
Logger::info("Test");
< /code>
Я упускаю что -то с объявлением моей функции, которая предотвращает компиляцию этого кода? Стоит ли использовать что -то другое, кроме format_string? Любая помощь будет очень оценена.

Подробнее здесь: https://stackoverflow.com/questions/795 ... ing-stdfor
Ответить

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

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

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

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

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