{fmt}:编译时字符串格式检查不起作用

时间:2019-08-21 01:01:23

标签: c++ g++ 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 ...什么都没有

根据fmt自述文件,这应该会产生错误(https://github.com/fmtlib/fmt)。

1 个答案:

答案 0 :(得分:2)

编译时检查需要足够的constexpr支持。使用g++ 5.4 and c++ 11不会进行编译时检查,但是使用g++ 6.1 and c++ 14会进行编译。另请参见FMT_USE_CONSTEXPR的定义。