Enum在这里有点棘手.ONE和TWO类型将位于外部名称空间中.因此,将名称添加到名称会导致警告.你可以删除限定符
template<class T>
void func()
{
cout << TWO << endl;
}
Run Code Online (Sandbox Code Playgroud)
由于TWO在外部名称空间中是已知的.你也可以将你的枚举移动到某种封闭的结构.
struct EnumContainer
{
enum MyEnum
{
ONE = 1, TWO, THREE
};
};
template<class T>
void func()
{
std::cout << T::TWO << std::endl;
}
int main()
{
func<EnumContainer>();
};
Run Code Online (Sandbox Code Playgroud)
现在编译器应该没问题.
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |