【问题标题】:Simple trick to turn function declaration into variable definition将函数声明转换为变量定义的简单技巧
【发布时间】: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


【解决方案1】:

只要您的编译器至少支持 C++11,Dúthomhas 的回答就可以了。对于更通用的解决方案,您可以将参数包装在一对额外的括号中: boost::system::system_error sys_err((boost::system::error_code()));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2018-02-04
    • 2023-03-12
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多