- 我可以从
constexpr
函数返回一个optional
吗? - 为什么?
- 如果是,它是如何工作的?
我对 boost::optional
和 std::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/