今天我们发现用于乘法和除法的函子分别称为std::multiplies
and std::divides
,而不是例如 std::multiply
和std::divide
。
考虑到这一点,至少可以说这是令人惊讶的,std::plus
并且std::minus
不是以相同的方式制定的。
有什么特殊的原因造成这种差异吗?
今天我们发现用于乘法和除法的函子分别称为std::multiplies
and std::divides
,而不是例如 std::multiply
和std::divide
。
考虑到这一点,至少可以说这是令人惊讶的,std::plus
并且std::minus
不是以相同的方式制定的。
有什么特殊的原因造成这种差异吗?
看起来这只不过是一个花絮:加号和减号甚至不是动词......
该名称本身不是C++14 原件:C++14 只是添加了<void>
专业化,但类型化版本和所有其他<functional>
头文件都存在于 C++98(甚至是 pre-iso),以及某些编码约定(作为动词、宾语作为形容词的接口……)还没有很好地建立起来。
C++14 所做的只是在现有定义中再添加一项功能,让现有代码继续按原样工作。它根本无法重新定义名称。
也就是说,还要考虑+
符号并不总是在整个标准库中用于add:在std::string
s 中它是连接,std::plus
如果应用于字符串,则连接它们。同样, * 通常用作“闭包”操作(想想boost::spirit
)。
一个更合适的“从头开始”库很可能会将它们中性地称为cross
、和dash
,让提供相应操作的类在它们自己的上下文中为它们提供一致的名称star
slash