关于模板类中的别名声明的问题

时间:2018-11-15 14:27:14

标签: c++ c++11 c++14

我对模板情况下的别名声明感到困惑。 示例:(只是“演示”的玩具)

template<class T>
class A {
private:
    using t = T;

public:
    t add(T a, T b);
};

// alias declarations
template<class T>
using tt = typename A<T>::t;

template<class T>
typename A<T>::t A<T>::add(T a, T b){
    return a+b;
}

// error !!!!
template<class T>
tt<T> A<T>::add(T a, T b) {
    return a + b;
}

错误信息:

  

g ++ -std = c ++ 14 -Wall -Wextra -Wfatal-errors -pedantic-errors main.cpp && ./a.out; echo程序返回$?   main.cpp:23:7:错误:没有声明匹配'tt A :: add(T,T)'    tt A :: add(T a,T b){          ^ ~~~   由于-Wfatal-errors,编译终止。   程序返回1

可以用别名简化形式编写任何方法吗?

0 个答案:

没有答案