使用C++11的强类型enum,可以声明如下类的成员枚举:public:};
但是,当使X<T>::E { a, b };
gcc 4.7.2和clang3.0都抱怨"error:‘enum::e’是枚举模板-pedantic“和”错误:枚举不能是模板“。我认为标准的这一节是相关的(事实上,这个问题源自于这个问题)是第14节模板
了解后,我惊讶地获悉MSVC 的代码如下: using bar = int;void quux() {}
quux<foo>();据我理解,T::template bar b;的使用是不正确的。声明b的正确方法是使用typename,如下所示:typename T::bar b; (而不是T::template bar b;