3

このテンプレート宣言を見ました:

template<typename C, typename R, typename P1, typename P2> struct mystruct<R(C::*)(P1,P2)> { ... };

C::* が「C のメンバーへのポインター」を意味することは知っていますが、R(C::*)(P1,P2) が何をするのか理解できません。

4

3 に答える 3

8
R(C::*)(P1,P2)

クラスCのメンバー関数へのポインター。タイプP1およびP2のパラメーターを取り、Rを返します。

この行は全体として、クラステンプレートの特殊化です(少なくともmystructどこかにプライマリテンプレートの宣言が存在する必要があります)。

于 2013-02-20T11:15:02.033 に答える
7

これは、 のテンプレート パラメーターに渡される型が、と の2 つのパラメーターを受け取る戻り値の型を持つのmystructメンバー関数へのポインターであることを意味します。CRP1P2

于 2013-02-20T11:19:39.920 に答える
5

R(C::*)(P1,P2)Cのメンバーである関数へのポインタがRを返し、P1とP2を引数として取るという意味です。

于 2013-02-20T11:14:49.327 に答える