[英]C++ template parameter/class ambiguity
在使用不同版本的g ++进行测试时,出现了以下问题
template<class bra>
struct Transform<bra, void> : kernel::Eri::Transform::bra {
static const size_t ni = bra::A::size;
bra::A
被解释为kernel::Eri::Transform::bra::A
,而不是g ++ 4.1.2中的模板参数。 另一方面,g ++ 4.3正确无误。
按照标准应该是正确的行为是什么?
同时,我稍微进行了重构以使问题消失。
在我看来像gcc 4.1.2是正确的。 §14.6.1/ 7(ISO / IEC 14882,C ++ 03) :
在类模板的定义中或出现在模板定义之外的此类模板的成员的定义中,对于不依赖于模板参数(14.6.2)的每个基类,如果基类或基类成员的名称与模板参数的名称相同,基类名称或成员名称隐藏了模板参数名称(3.3.7)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.