【发布时间】:2021-04-02 07:46:00
【问题描述】:
我对与模板规范一起使用时的 boost::make_optional() 行为感到困惑。
特别是,我仍然不清楚这是为什么:
int pizza = 5;
boost::optional<int> pizza_opt = boost::make_optional<int>(pizza)
抛出编译错误无法将‘int&&’类型的右值引用绑定到‘int’类型的左值;而这:
int foo(int bar)
{ return bar; }
boost::optional<int> pizza_opt = boost::make_optional<int>(foo(pizza))
工作正常。
我已经从this 知道,使用 boost::make_optional 指定类型没有多大意义,但我正在阅读一些使用这种结构的代码。
谢谢!
【问题讨论】:
-
std::make_optional的想法是让演绎发生... -
正如我在问题中所写,我已经知道这一点..
-
“但我正在阅读一些使用这种结构的代码。” 这些代码是“错误的”。
-
我认为你是对的。但它帮助我学习了这种语言的一个新特性;)
标签: c++ boost boost-optional