2017-02-17 10 views
2

:C++の中デリゲートの実装を表示 https://codereview.stackexchange.com/questions/14730/impossibly-fast-delegate-in-c11 、何この構文は次のとおりです。この構文は何ですか?ここでは、この質問にはC++

template<class R, class ...A> 
class delegate<R (A...)> // <--- Argument wrapping of some kind? 

することは、これは別のタイプになっていますか?私は以前これが使われているのを見たことがないので、実際に何をするべきかを本当に解析することはできません。

+2

関数定義( 'std :: function 'のようなもの): 'A'型の複数の引数をとります(ここで' A'はバリデーションテンプレートですパラメータ)を返し、 'R'を返します。 – yeputons

+0

それは関数ptrの単一のタイプになりますか? – user45681

+1

@ user45681正確には、型は関数であり、関数へのポインタではありません。 – songyuanyao

答えて

2

これは、関数のテンプレート特殊化です。

template <class T> 
struct func; 

template <class R, class... A> 
struct func<R (A...)> 
{ 

}; 

テンプレートを関数シグネチャでインスタンス化すると、特殊化が呼び出されます。例:

func<void(int)> f1; 
func<int(int, int)> f2; 
関連する問題