http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52126
--- Comment #2 from tmmikolajczyk at gmail dot com 2012-02-05 20:57:29 UTC ---
Further investigation shows that the issue appears only when inheritance from
the template class (class B : private A<T>) is provided explicitly. According
to the standard a nested class defined inside a class template is implicitly
template as well. The modified code reflecting that rule compiles fine:
template<typename T>
class A
{
public:
void foo() {};
class B : private A
{
public:
typedef A inherited;
using inherited::foo;
};
};
Anyway, the first version of the code seems to be valid C++ code.