我注意到了std::binary_function<...>
is only a struct with typedefs。在链接上,它具体说:
binary_function没有定义operator()
;预期派生类将对此进行定义。
这对我来说似乎很荒谬。如果您可以继承或实例化它而根本没有任何功能,则该类(或结构)有什么意义呢?还是语义与我看来不一样?
最佳答案
请记住,不建议使用C ++ 11,而C ++ 17则删除了binary_function
。binary_function
只是创建(现在也不推荐使用)功能适配器使用的typedef的助手,例如not2
。请记住,在auto
和decltype
可用之前,很难或不可能推断出这些类型,因此必须手动提供它们。另外,定义operator()
的意义是什么?不可能实现,将其设置为pure virtual
会严重浪费性能。