【发布时间】:2014-09-22 04:37:31
【问题描述】:
当仅使用标准类型参数实例化具有模板类类型的变量时,语法如下所示:
template<typename Arg = int>
class Templ;
Templ<>& myTempl;
省略空参数列表<> 应该会产生编译错误,因为需要模板参数列表。
但显然(至少在 VS2013 下),以下声明确实 不需要 需要模板参数列表:
template<typename Arg> //" = int" left out
class Templ{
Templ& myTempl; //no <> here
};
但是为什么会这样呢?根据 IntelliSense,编译器选择了正确的类型 (Templ<int>),因此它按预期工作,但成员声明不应该仍然需要一个空参数列表吗?
编辑: 不,它没有按预期工作。我检查得不够彻底。当悬停在Templ<short>::myTempl 线上时,IntelliSense 显示其类型为short。
【问题讨论】:
标签: c++ visual-studio class templates c++11