2

我正在尝试使用 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)。

4

1 回答 1

2

编译时检查需要足够的 constexpr 支持。g++ 5.4 和 c++ 11不会有编译时检查,但g ++ 6.1 和 c++ 14会有。另见FMT_USE_CONSTEXPR的定义。

于 2019-08-21T03:07:35.383 回答