我看到這個模板聲明: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
我看到這個模板聲明: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
這意味着,傳遞給的mystruct
模板參數的類型是一個指向的C
與R
返回類型這需要的類型P1
和P2
兩個參數的成員函數。
R(C::*)(P1,P2)
表示指向函數的指針,該函數是C的成員返回R,並將P1和P2作爲參數。
R(C::*)(P1,P2)
指向C類的成員函數,考慮類型的P1和P2的參數,返回R.
線作爲一個整體是一個類模板特(必須有存在至少一個聲明某處的mystruct
的主模板)。