c++如何传递任意函数到模板函数

任意成员函数传递到模板函数中,是可以的

template<typename R, typename...TS>
void setm(R(C::*fn)(TS...ts)){}

setm(&Class::Function);// ok

全局的普通函数如何传递给模板函数呢?

template<typename ...TS>
void set(void(*fn)(TS... ts));

set([](int){});// C2784

ps:我不想用std::function/std::bind

阅读 2.7k
1 个回答

lambda表达式无法完成自动类型推导。所以你要强制转换下

    typedef void (*func)(int);

    func func_ = [](int) -> void {};

    set(func_ );

对是对的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题