質問が非常に基本的な場合は申し訳ありません。Boost.signals のようなテンプレート実装の単純なサンプル コードを 1 つ見ることができません。
boost::signal<void ()> sig;
私が知っているのは以下です:
template <class T>
TemplateClass {
T t;
};
TemplateClass<int> a;
親切にいくつかの指針を提供してください。
質問が非常に基本的な場合は申し訳ありません。Boost.signals のようなテンプレート実装の単純なサンプル コードを 1 つ見ることができません。
boost::signal<void ()> sig;
私が知っているのは以下です:
template <class T>
TemplateClass {
T t;
};
TemplateClass<int> a;
親切にいくつかの指針を提供してください。
問題が何であるかはわかりませんが、ブースト シグナルとは、パブリッシャー/サブスクライバー システムを作成して、関係者にイベントをディスパッチできるようにすることです。
宣言 -boost::signal sig;- は、その下にリストされているような単純なテンプレートですが、型は関数シグネチャです (関数ポインターと混同しないでください)。サブスクライバーは、その署名を使用してコールバックを提供できます。
簡単な Hello World の例を次に示します。
http://www.boost.org/doc/libs/1_51_0/doc/html/signals/tutorial.html#id3193274
それが役立つことを願っています
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);
}