2013-02-20 148 views
3

我看到這個模板聲明:R(C :: *)(P1,P2)是什麼意思?

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

我知道是c :: *表示 「指針到C中的一員」,但我不明白什麼將R(C :: *)(P1 ,P2)does

回答

7

這意味着,傳遞給的mystruct模板參數的類型是一個指向的CR返回類型這需要的類型P1P2兩個參數的成員函數。

5

R(C::*)(P1,P2)表示指向函數的指針,該函數是C的成員返回R,並將P1和P2作爲參數。

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

指向C類的成員函數,考慮類型的P1和P2的參數,返回R.

線作爲一個整體是一個類模板特(必須有存在至少一個聲明某處的mystruct的主模板)。