2016-12-15 5 views
-5

引数を参照として渡すときにテンプレートを使用するにはどうすればよいですか?ここで参照で引数を渡している間に関数内のテンプレートを使用する方法

template <typename T> 

void fun(T &A) 
{ 
     //code here 
} 

int main() 
{ 
     SomeElement A; 
     fun(A); 
     DifferentElement B; 
     fun(B); 
} 

は私のエラーです:

error: use of undeclared identifier 'T'

+6

どのコンパイラ? 'SomeElement'と' DifferentElement'のダミー宣言でうまく動作します(rextester.comのgcc、clang、vC++で試しました) – wasthishelpful

+2

あなたの質問を[編集]して[mcve]を提供してください。 –

+0

私はLinuxを使用しています –

答えて

2

あなたはfunを呼び出しているとき、テンプレートパラメータの値を指定する必要があります。

SomeElement A; 
fun<SomeElement>(A); 
DifferentElement B; 
fun<DifferentElement>(B); 

いくつかのコンパイラはそれらを自動的に推測することができますが、警告を与えます。

+0

OPは古いコンパイラにあるようですが、自動的に型を推論することはできません。 – grisevg

+5

C++ 11より前のテンプレート引数の控除が存在する(幸いにも) – Rerito

+0

@rerito私の悪い、私はそれを 'template 'と混同しました – grisevg

関連する問題