[問題] template引數推導
書上看到的例子,節錄部份,如下
template <typename T1,typename T2>
void foo(typename RParam<T1>::Type p1,
typename RParam<T2>::Type p2)
{...}
RParem<T>::Type 用來篩選type為T 或 const& T
int main(){
MyClass1 mc1;
MyClass2 mc2;
foo<MyClass1,MyClass2>(mc1,mc2);
return 0;
}
書上說上面這樣的寫法無法自動引數推導,原因是
"template parameters 只出現在函式參數的qualifiers上,
因此呼叫端必須明確指定templates arguments"
對於這兩句不是很清楚
我的想法是,foo<MyClass1,MyClass2>(mc1,mc2)
可先推導出最外層的T1=MyClass1,T2=MyClass2
所以內層的RParam<T1>::Type = RParam<MyClass1>::Type
RParam<T2>::Type = RParam<MyClass2>::Type
那麼foo<MyClass1,MyClass2>(mc1,mc2)看起來應該是所有的type都推導出來啦
這樣的想法我是覺得好像哪裡怪怪的,但又不知道是哪裡不對
書上是有把正確的寫法寫出來(就是再包一層)
但我還是不太懂這樣的寫法為麼不行,可以請哪個理解的大大
能用更淺顯易懂的方式表達嗎?謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.238.4
※ 編輯: tyc5116 來自: 220.134.238.4 (01/11 17:35)
推
01/11 19:40, , 1F
01/11 19:40, 1F
→
01/11 19:45, , 2F
01/11 19:45, 2F
→
01/11 23:47, , 3F
01/11 23:47, 3F
→
01/12 10:28, , 4F
01/12 10:28, 4F
→
01/12 10:29, , 5F
01/12 10:29, 5F
→
01/13 22:54, , 6F
01/13 22:54, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章