c++ - 我可以从 constexpr 函数返回一个可选值吗?

标签 c++ boost std constexpr boost-optional

  • 我可以从 constexpr 函数返回一个 optional 吗?
  • 为什么?
  • 如果是,它是如何工作的?

我对 boost::optionalstd::optional 都很感兴趣。它们的行为是否相同?

最佳答案

boost::optional不能由 constexpr 返回功能。或者至少,文档对此不提供任何保证

然而,std::optional ,如已接受的 C++14 提案所定义,可以constexpr 返回功能。但如果 optional 的类型参数是微不足道的破坏。

这允许 std::optional 的析构函数在那些情况下是微不足道的。到那时,销毁物体就没有困难了,所以没有什么能阻止std::optional从文字类型开始。

The proposal is quite clear on this.如果T是微不足道的可破坏的,那么 optional 的大部分构造函数将是 constexpr , 和 optional<T>将是文字类型。因此,它可以在 constexpr 中创建功能。

关于c++ - 我可以从 constexpr 函数返回一个可选值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16419968/

相关文章:

c# - 覆盖基类方法

c++ - 绕过#define'd 宏?

C++ STL map/vector of vectors 和线程安全

c++ - 在 C++ 中,存储对象确保唯一名称并能够在以后有效检索它们的最佳策略是什么?

c++ - 模板化重载运算符的编译错误 "No global operator found"

c++ - 如何在 C++ 中的一个应用程序中同时使用 TCP 和 UDP

c++ - Boost线程断点

c++ - 在 boost::ptime 流上捕获错误

c++ - 如何从 STL 容器中删除元素?

c++ - Windows Phone 8 上的性病