2011-01-23 23 views
0

テンプレートパラメータが1つしかない場合、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

コンパイラは、複数のテンプレートパラメータを推測できるはずです。この問題を示すために完全なコンパイル可能なコードを投稿できますか? –

+3

私が知る限り、このコードは何も間違っていません。 http://www.ideone.com/AEVs4 –

+0

パラメータリストで '&'を削除するとどうなりますか?私は多少C++で錆びていますが、参照が期待されるところで整数定数( '1''、' 2')を渡すことができます。 – stakx

答えて

3

2番目の関数と呼び出しは完全に有効です。あなたのコンパイラは、古いものを拒否して盗んだり、フラットになったりします。

+0

少し前にコメントでカバーされた。 –

+1

@トマラク:しかしまともな答えで書かれたことはありません... – rubenvb

+1

@rubenvb:質問に欠陥があるので、この質問には答えはありません。 –

関連する問題