我写了以下最小的工作示例
#include <iostream>
template <typename T>
struct A {
enum myenum {faa, fee, fii};
myenum m_m;
A(const myenum& m = faa): m_m(m) {}
};
int main() {
A<int> a1;
A<int> a2(A<int>::fii);
std::cout << a1.m_m << std::endl
<< a2.m_m << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译并执行它会导致
$ g++ main.cpp && ./a.out
0
2
Run Code Online (Sandbox Code Playgroud)
但是,当函数的定义写在类之外时(即如下图)
#include <iostream>
template <typename T>
struct A {
enum myenum {faa, fee, fii};
myenum m_m;
A(const myenum& m);
};
template <typename T>
A<T>::A(const myenum& m = …Run Code Online (Sandbox Code Playgroud)