我对模板情况下的别名声明感到困惑。 示例:(只是“演示”的玩具)
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
可以用别名简化形式编写任何方法吗?