推 hylkevin:foo<MyClass1,MyClass2>(...)就是明確指定foo(...)則不是 12/24 01:45
template<typename T>
class RParam{
public:
typedef typename IfThenElse<IsClass<T>::No,
T,
T const&>::ResultT Type
//判斷是否為Class,是Type則為T,不是Type則為ResultT
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.
對這句話的意思不清楚,可以麻煩解釋一下嗎? 謝謝
p.s 程式碼有部份省略沒打,不知道這樣的表達方式夠不夠清楚
不夠的話我在補上其餘的程式碼
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.251.177.205