实验性::可选“;空选“t”;命名原理 < > >代码> Boo::可选的< /Calp> C++库具有“不值钱”,由 Boo::NON/,它是一个选择好的名称,如代码 f(..., optional<T> default_argument = boost::none) f(…,可选默认参数=boost::none)
或实验性::可选“;空选“t”;命名原理 < > >代码> Boo::可选的< /Calp> C++库具有“不值钱”,由 Boo::NON/,它是一个选择好的名称,如代码 f(..., optional<T> default_argument = boost::none) f(…,可选默认参数=boost::none),c++,boost,optional,C++,Boost,Optional,或 f(…,可选默认参数=none) 可读性很强——目的清楚地传达给读者。它也类似于其他语言的标准类中提供的“无值”。这个Boost库作为std::experimental::optional被纳入标准,但是none被重命名为不可理解的nullopt\t。有人知道为什么吗?有趣的是,标准化boost::optional比标准化boost::none更容易boost::none,虽然它用于初始化boost::optionals,但它没有定义良好的语义 行为良好的值语义替代void是有用的,但需要
f(…,可选默认参数=none)
可读性很强——目的清楚地传达给读者。它也类似于其他语言的标准类中提供的“无值”。这个Boost库作为
std::experimental::optional
被纳入标准,但是none
被重命名为不可理解的nullopt\t
。有人知道为什么吗?有趣的是,标准化boost::optional
比标准化boost::none
更容易boost::none
,虽然它用于初始化boost::optional
s,但它没有定义良好的语义
行为良好的值语义替代
void
是有用的,但需要回答很多问题。它应该有操作符,或者可以与其他类型命名实践保持一致。实际值为nullopt
,类型为nullopt\t
。就像nullptr
是一个类型为nullptr\u t
的值一样nullopt
也特定于optional
,而none
可以应用于任何东西。对于expected
的标准化来说,这是一个有趣的问题,其中expected
在语义上被明确地假定为等同于optional
@NiallDouglas,这就是名称空间的用途……非常高兴听到关于none
的工作nullopt
确实会损害可读性。更重要的是:谢谢你在这方面的工作!
f(..., optional<T> default_argument = none)