{fmt}: проверка формата строки во время компиляции не работает

Я пытаюсь получить проверку строки формата во время компиляции, работая с fmt 5.3.0 (только заголовки).

$ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
#define FMT_HEADER_ONLY
#define FMT_STRING_ALIAS 1

#include <fmt/format.h>

int main(){
  std::string s = format(fmt("{2}"), 42);
  return 0;
}

$ g++ -I../include -std=c++11 test.cpp...ничего такого

Согласно файлу readme, это должно вызвать ошибку ( https://github.com/fmtlib/fmt).

1 ответ

Решение

Проверка времени компиляции требует достаточной поддержки constexpr. В g++ 5.4 и C++ 11 проверка времени компиляции не будет, но с g++ 6.1 и C++ 14 будет. См. Также определение FMT_USE_CONSTEXPR.

Другие вопросы по тегам