C ++ template parameter / class ambiguity
when testing with another version of g ++ the following issue occurred
template<class bra>
struct Transform<bra, void> : kernel::Eri::Transform::bra {
static const size_t ni = bra::A::size;
bra::A
is interpreted as kernel::Eri::Transform::bra::A
, not a g ++ 4.1.2 template argument. on the other hand, g ++ 4.3 does it right.
What should be the correct behavior according to the standard?
In the meantime, I'll reorganize a bit to make the problem go away.
a source to share
It seems to me that gcc 4.1.2 was right. ยง14.6.1 / 7 (ISO / IEC 14882, C ++ 03):
In the definition of a class template, or in the definition of a member of such a template that appears outside of the template definition, for each base class that does not depend on a template parameter (14.6.2), if the base class name or base class element name is the same as the template parameter name, base class name or principal name hides the template parameter name (3.3.7).
a source to share