c++ - 将模板传递给 boost 函数

标签 c++ function boost templates

template <class EventType>
class IEvent;

class IEventable;

typedef boost::function<void (IEventable&, IEvent&)> behaviorRef;

将模板类 IEvent 传递给 boost 函数的正确方法是什么?使用此代码我得到: 错误:功能转换表达式列表被视为复合表达式 错误:模板参数 1 无效 错误:‘;’标记前的声明类型无效

最佳答案

boost::function 需要一个类型,所以你不能给它传递一个模板的名字,它必须是一个模板< em>实例。所以要么使用特定的实例

typedef boost::function<void (IEventable&, IEvent<SomeEventType>&)> behaviorRef;

或者把整个事情本身放到一个模板中:

template< typename EventType >
struct foo {
  typedef boost::function<void (IEventable&, IEvent<EventType >&)> behaviorRef;
};

关于c++ - 将模板传递给 boost 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3040893/

相关文章:

c++ - 如何在 boost C++ 中对具有多个参数的函数使用二分方法

c++ - 将 boost::lockfree::spsc_queue 与分配器一起使用

c - 使用 DLL 调用 Modelica 外部 C 函数

php - php中的一个递增函数出错

c++ - 将 protobuf 与 boost asio 结合使用

c++ - 为什么/何时不需要 __declspec( dllimport )?

c++ - std::future<neither::Either<int, std::string>> 段错误

c++ - 用C++中的字符串替换空格

.NET 编译器 - 来自非托管 C++ 的 CLR 程序集元数据访问/反射

javascript - 改变图像的延迟功能