2011-01-23 102 views
0

似乎C++模板可以在只有一个模板参数时自动扣除类型。例如,具有多于1个类型名称的模板函数

template<typename T> 

void f(const T &t) 
{ 
    cout << t << endl; 
} 

f(1); 

很好。

然而,

template<typename T1, typename T2> 

void f(const T1 &t1, const T2 &t2) 
{ 
    cout << t1 << t2 << endl; 
} 

f(1, 2); 

上述代码无法通过编译。这是因为编译器的能力还是违背了标准?

+6

编译器应该能够推断出多个模板参数。你能发布完整的可编译代码来证明这个问题吗? – 2011-01-23 16:27:23

+3

据我所知,这段代码没有错。 http://www.ideone.com/AEVs4 – 2011-01-23 16:29:22

回答

3

第二个函数和调用是完全有效的。你的编译器被老化或老掉牙拒绝了。

相关问题