实验性::可选“;空选“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)