我已经使用Loki的Functor有一段时间了,最近我提了一个关于它的问题(至今未得到答复...)
有人告诉我应该使用std::function,但我更喜欢Loki的Functor实现,因为它还可以与各种指针类型作为参数一起使用(例如std::shared_ptr)。
有没有一种方法可以使用std::function来实现这个?
struct Toto
{
void foo( int param )
{
std::cout << "foo: " << param << std::endl;
}
};
int
main( int argc, const char** argv )
{
std::shared_ptr<Toto> ptr = std::make_shared<Toto>();
Loki::Functor<void, LOKI_TYPELIST_1(int)> func( ptr, &Toto::foo );
func(1);
}
有没有一种方法可以使用std::function来实现这个?
shared_ptr
,即使它适用,也不会在每次调用时重新评估指针。此外,请注意这些一行代码执行完全不同的操作:bind()
不会返回一个std::function
。 - Potatoswattershared_ptr
一起使用。为什么它应该重新评估? - ForEveRauto
存储的是静态分派绑定对象,而不是动态分派的std::function
,它们是完全不同的东西。 - PotatoswatterLoki::Functor
与可变参数模板一起工作。再次感谢! - Athanase