C++ 使用相同的符号-为什么它';s允许变量/类,但不允许其他变量/类?
允许对变量id和类id使用相同的符号C++ 使用相同的符号-为什么它';s允许变量/类,但不允许其他变量/类?,c++,redefinition,C++,Redefinition,允许对变量id和类id使用相同的符号T,如下所示: struct S { int T = 0; struct T{}; }; 在这种情况下,struct T被int T隐藏 但是,对于以下其他情况,它们被视为重新定义,不允许: struct S { int T = 0; template<class> struct T{}; // error! using T = int; // error! }; 结构 { int T=0;
T
,如下所示:
struct S
{
int T = 0;
struct T{};
};
在这种情况下,struct T
被int T
隐藏
但是,对于以下其他情况,它们被视为重新定义,不允许:
struct S
{
int T = 0;
template<class>
struct T{}; // error!
using T = int; // error!
};
结构
{
int T=0;
模板
结构T{};//错误!
使用T=int;//错误!
};
在第一个例子中,这种不一致的理由是什么?有什么好的理由允许这种情况发生