c++ 模板类,方法返回值类型是typedef出来的,或者是auto,那么此方法在类外面如何定义? - 比如方法max1的返回值是用typedef定义出来的mint,那么在类外如何定义这个方法呢?
template<typename T>struct aa{ typedef int mint; mint max1(T a); auto max2(T a) -> decltype(int(1)); mint data;};尝试1: template<typename T>mint aa<T>::max1(T a){}尝试1的结果:编译不过,提示不能识别mint 尝试2: template<typename T>aa<T>::mint aa<T>::max1(T a){}尝试2的结果:依然编译不过 尝试3: 在前面加typename关键字 template<typename T>typename aa<T>::mint aa<T>::max1(T a){}尝试3的结果:编译通过 template<typename T>struct aa{ typedef int mint; mint max1(T a); auto max2(T a) -> decltype(int(1)); mint data;};template<typename T>typename aa<T>::mint aa<T>::max1(T a){ }template<typename T>auto aa<T>::max2(T a) -> decltype(int(1)){ return a;}int main(){ aa<int> a; auto x = a.max2(12); std::cout << x << std::endl;}
|