{fmt}: Compile-time 字符串格式检查不起作用
{fmt}: Compile-time string format check doesn't work
我正在尝试使用 fmt 5.3.0(仅限 headers)在编译时检查格式字符串。
$ 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)。
编译时检查需要足够的 constexpr 支持。随着 g++ 5.4 and c++ 11 there will not be a compile time check, but with g++ 6.1 and c++ 14 there will be. See also the definition of FMT_USE_CONSTEXPR.
我正在尝试使用 fmt 5.3.0(仅限 headers)在编译时检查格式字符串。
$ 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)。
编译时检查需要足够的 constexpr 支持。随着 g++ 5.4 and c++ 11 there will not be a compile time check, but with g++ 6.1 and c++ 14 there will be. See also the definition of FMT_USE_CONSTEXPR.