为什么std :: optional的“就地构造函数”是显式的?

时间:2016-10-28 18:14:20

标签: constructor optional c++17 explicit in-place

std::in_place std::optional的{​​{1}}构造函数必须为explicit的C ++ 17标准says(与boost::optional相同)。但为什么??这背后的原因是什么?

它禁止有这样一个很好的代码:

struct Value
{
    Value(int) { }
};

std::optional<Value> giveValueFive()
{
    return {std::in_place, 5}; 
}

0 个答案:

没有答案