实例化函数模板时出错

时间:2016-10-09 18:43:30

标签: c++ templates

我正在尝试以下简单的事情来行使ADL的行为

 namespace test{
   struct S{ public: s():a(10){} int a;};
   template<typename T>
   void fun(S o){
       T a{};
       std::cout<<(a+o.a)<<"\n";
   }
 }

 int main(){
     test::S  A;
     fun<int>(A);
 }
    error1: expected primary-expression before ‘int’
       fun<(int)>(A);
    error2:'fun’ was not declared in this scope
       fun<int>(A);

我不确定第一个错误(有没有什么可以处理C ++烦恼的解析?)和第二个错误,因为我已经传递了S类型的参数我相信ADL会考虑{ {1}}及其关联的S,但不确定我收到namespace test错误的原因。

1 个答案:

答案 0 :(得分:-1)

你放置了乐趣&lt;&gt;在test-namespace中。

所以用test :: fun

调用它