今天we discovered用于乘法和除法的仿函数分别称为std::multiplies
和std::divides
,而不是分别为std::multiply
和std::divide
。
至少可以说这是令人惊讶的,因为std::plus
和std::minus
的制定方式不同。
是否存在差异的特殊原因?
答案 0 :(得分:1)
看起来这只不过是 blooper :加号和减号甚至都不是动词......
名称本身不是 C ++ 14原件:C ++ 14只添加<void>
专门化,但输入的版本和所有其他<functional>
标题内容存在从C ++ 98(甚至pre-iso)开始,某些编码约定(作为动词的函数,作为形容词的作为子代接口的对象......)还没有很好地建立起来。
C ++ 14所做的只是为现有定义添加一个功能,让现有代码继续按原样运行。它根本无法重新定义名称。
也就是说,还要考虑{em> add 的整个标准库中并不总是使用+
符号:在std::string
中它是串联的,{{1如果应用于字符串,则连接它们。类似地,*通常用作“闭包”操作(想想std::plus
)。
更合适的“从头开始”库很可能会将它们称为boost::spirit
,cross
,dash
和star
中性,让提供相应操作的类在他们自己的背景下给他们一致的名字