C++ 如何在函数中使用模板,同时通过引用传递参数

C++ 如何在函数中使用模板,同时通过引用传递参数,c++,C++,传递参数作为引用时如何使用模板 template <typename T> void fun(T &A) { //code here } int main() { SomeElement A; fun(A); DifferentElement B; fun(B); } 模板 虚无乐趣(T&A) { //代码在这里 } int main() { 元素A; 乐趣(A); 差异元素B; 乐趣(B); }

传递参数作为引用时如何使用模板

 template <typename T>

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

 int main()
 {
      SomeElement A;
      fun(A);
      DifferentElement B;
      fun(B);
 }
模板
虚无乐趣(T&A)
{
//代码在这里
}
int main()
{
元素A;
乐趣(A);
差异元素B;
乐趣(B);
}
这是我的错误:

错误:使用未声明的标识符“T”


调用
fun
时,需要指定模板参数值:

SomeElement A;
fun<SomeElement>(A);
DifferentElement B;
fun<DifferentElement>(B);
A元素;
乐趣(A);
差异元素B;
乐趣(B);

某些编译器可以自动推断它们,但会发出警告。

哪个编译器?使用
SomeElement
DifferentElement
的虚拟声明(在rextester.com上使用gcc、clang和vc++进行了尝试)对我来说效果很好。请提供一个问题。我使用的是LinuxLinux不是编译器-您可能使用的是gcc。然而,当前版本的gcc(或者更确切地说是g++)将非常乐意编译上述代码。请指定您的实际编译器和版本。看起来OP是在旧的编译器上,它无法自动推断类型。模板参数推断存在,因为在C++11之前(幸运的是)@rerito my bad,我把它与
模板