对不起,如果这个问题很基础。我无法找到一个简单的模板实现示例代码 Boost.signals 像:
boost::signal<void ()> sig;
我所知道的是以下内容:
template <class T>
TemplateClass {
T t;
};
TemplateClass<int> a;
请提供一些指示?
答案 0 :(得分:0)
不确定问题是什么,但带有提升信号的是,您创建了一个发布者/订阅者系统,以便您可以将事件发送给感兴趣的各方。
声明-boost :: signal sig; - 是一个简单的模板,如下面列出的那个,但类型是函数签名(不要与函数指针混淆)。然后,订阅者可以使用该签名提供回调。
这是一个简单的hello world示例:
http://www.boost.org/doc/libs/1_51_0/doc/html/signals/tutorial.html#id3193274
希望有所帮助
答案 1 :(得分:0)
你想要如何创建boost :: signals2 :: signal之类的模板参数? 实施示例如下:
#include <tuple>
template <class Signature>
class TemplateClass; // declaration only
template <class R, class... Args>
class TemplateClass<R(Args...)> { // partial specialization as function like signature
public:
typedef R result_type;
typedef std::tuple<Args...> arg_types;
R operator()(const Args&... args)
{
return invoke_function(args...);
}
};
int main()
{
TemplateClass<void(int, double)> x;
x(1, 3.14);
}