【发布时间】:2015-11-14 17:21:56
【问题描述】:
我知道下面的语句被解释为函数声明而不是变量定义
boost::system::system_error sys_err(boost::system::error_code());
有没有什么简单的技巧可以把它变成我想要的单行变量定义?我不是很喜欢这篇文章
boost::system::system_error sys_err(0, boost::system::system_category());
【问题讨论】:
-
std::system_error sys_err{std::error_code()}; -
@Dúthomhas 你是对的。我的错没有明确我的意图。我实际上正在使用 Boost,并且我不希望我的代码依赖于 C++11。
-
编译器解释这种模棱两可的语法的方式被称为“最令人头疼的解析”。在 SO 上,我们甚至有一个标签。如果您阅读tag's description,您甚至可以找到问题的答案! :-)
标签: c++ variables syntax function-declaration most-vexing-parse