作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] template問題
時間Fri Dec 23 11:47:54 2011
※ 引述《tyc5116 (累人啊....)》之銘言:
: template<typename T1,typaname T2>
: void foo(typename RParam<T1>::Type p1,
^^^^^^^^^^
: typename RParam<T2>::Type p2){}
: int main(){
: MyClass1 mc1;
: MyClass2 mc2;
: foo<MyClass1,MyClass2>(mc1,mc2);
: return 0;
: }
: 書上說foo無法經由引數推導
: 因為template parameters只出現在函式參數的qualifiers上
: 因此呼叫端必須明確指定templates arguments.
: 對這句話的意思不清楚,可以麻煩解釋一下嗎? 謝謝
如果你只寫 foo(mc1, mc2)
表示 compiler 需要尋找出適當的 T1 和 T2
使得 RParam<T1>::Type 剛好等於 MyClass1
而且 RParam<T2>::Type 又等於 MyClass2
不但需要花很多時間,而且符合條件的 T1 與 T2 還可能有許多組答案
所以 compiler 會拒絕進行推導
直接要你提供正確的 T1 與 T2
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.3.139
→ loveme00835:補充一下, 思考如果 RParam 對某個型別作全特化, 應該 12/23 14:28
→ loveme00835:就可以想像了 12/23 14:28
推 tyc5116:大概了解了,謝謝 12/23 14:32
→ loveme00835:如同 function 多對一, 現在則是作逆推 12/23 14:33