我注意到了std::binary_function<...> is only a struct with typedefs。在链接上,它具体说:


  binary_function没有定义operator();预期派生类将对此进行定义。


这对我来说似乎很荒谬。如果您可以继承或实例化它而根本没有任何功能,则该类(或结构)有什么意义呢?还是语义与我看来不一样?

最佳答案

请记住,不建议使用C ++ 11,而C ++ 17则删除了binary_function

binary_function只是创建(现在也不推荐使用)功能适配器使用的typedef的助手,例如not2。请记住,在autodecltype可用之前,很难或不可能推断出这些类型,因此必须手动提供它们。另外,定义operator()的意义是什么?不可能实现,将其设置为pure virtual会严重浪费性能。

07-24 09:46
查看更多