fmt:编译时字符串格式检查不起作用
Posted
技术标签:
【中文标题】fmt:编译时字符串格式检查不起作用【英文标题】:fmt: Compile-time string format check doesn't workfmt:编译时字符串格式检查不起作用 【发布时间】:2019-08-21 01:01:23 【问题描述】:我正在尝试使用 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】:编译时检查需要足够的 constexpr 支持。 g++ 5.4 and c++ 11 不会有编译时检查,但 g++ 6.1 and c++ 14 会有。另见FMT_USE_CONSTEXPR的定义。
【讨论】:
谢谢!这工作:安装g++-6:gist.github.com/zuyu/7d5682a5c75282c596449758d21db5edg++-6 -I../include -std=c++14 test.cpp
:context_.on_error("argument index out of range");
以上是关于fmt:编译时字符串格式检查不起作用的主要内容,如果未能解决你的问题,请参考以下文章
rake assets:precompile 在本地编译时不起作用
Visual Studio Ctrl K + D(代码格式化)不起作用