c++ - boost::optional 与 boost::make_optional

标签 c++ boost boost-optional

我想更好地理解使用 default 构造函数创建 boost::optional 对象的区别:

boost::optional<PastaType> pasta = boost::optional<PastaType>(spaghetti)

或使用make_optional 版本:

boost::optional<PastaType> pasta = boost::make_optional<PastaType>(spaghetti)

环顾四周,我只是了解到 make_optional 版本 PastaType 不能是引用类型,但我想弄清楚何时使用其中一个或另一个更好。

谢谢!

最佳答案

make_optional 是一个便利或辅助函数,可以通过推断 optional 的模板参数来减少您必须编写的代码量。这两种方法在功能上是等效的。

auto pasta = boost::make_optional(spaghetti);

关于c++ - boost::optional 与 boost::make_optional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66908075/

相关文章:

c++ - 如何允许自定义返回类型的成员函数以在 C++ 中进行类型删除?

c++ - 带有 lambda 表达式的模板类中的语法错误

c++ - 如何通过对象引用传递函数的参数(C++)

c++ - 将定义转换为 BOOST_PP_TUPLE 或 BOOST_PP_SEQ

c++ - 使用 Visual Studio 调试时看不到 boost::optional 内容

c++ - 如何脱离 std::experimental::optional?

c++ - 为什么 volatile 对象不能调用非 volatile 成员函数

c++ - 在 C++ Primer 的构造函数中,成员的初始值(如 'contents(ht * wd, c)')如何工作?

c++ boost format float - 如何指定我不想要 .和以下零

c++ - boost::optional 和类型转换