ltj*_*jax 20
在C++ 11中,没有 - 没有惩罚.我甚至认为这是一个非常好的风格,不会污染任何"更明显"的范围与您的实现细节,当然,除非您想在其他地方重用该仿函数.但是,lambdas本质上是这个想法的浓缩形式,如果你只是使用struct作为functor ,通常应该是首选.对于所有类型的数据,这是完全正常的,但它通常与竞争std::pair,并std::tuple在这方面.
在C++ 03中,您不能使用这样的结构作为模板参数,因为这些参数需要具有外部链接(尽管Visual Studio允许您这样做).使用具有多态接口的这种结构仍然是有用的.