【发布时间】:2014-12-17 11:41:05
【问题描述】:
为什么这段代码可以在 Visual Studio 2012 上编译和运行?这只是一个错误还是我错过了什么
namespace SSSS
{
namespace SSS
{
template <class T>
class SS
{
public:
typedef T ValueType;
SS(){std::cout<<T();}
SS(T t) { std::cout<<t;}
};
typedef SS<double> DD;
}
}
int main()
{
SSSS::SSS::DD::SS d;
}
【问题讨论】:
-
VS 2012 还是 2013?当这段代码被编译时,你期望会发生什么?
-
为什么不希望它编译运行?
-
我希望编译器必须警告,SSSS::SSS::DD::SS 不是类型。
-
请将其添加到问题中以使其完整。
-
正确的语法应该是
class SSSS::SSS::DD::SS d;,这可能只是VS中的一个bug
标签: c++ visual-studio templates visual-studio-2012