Hello.

Why were base class "typedefs" hidden by template<> and explicit usage
of them does not work too?

Try open only one of the lines in the example below
    //using Tparent::Tptr;
    //typedef Tparent::Tptr Tptr;

Consider example:

template< class A, class B> class Z;
template< class A, class B> class Ext1;

template< class A, class B>
class Base
{
public:
        typedef Z<A,B> Tptr;
};

template< class A >
class Derived: public Base<A, Ext1<int,int> >
{
public:
        typedef Base<A, Ext1<int,int> > Tparent;

        using Tparent::Tptr;
                typedef Tparent::Tptr Tptr;

        inline void test(const Tptr obj)throw();
};

class Base2
{
public:
        typedef Z<int,int> Tptr;
};

class Derived2: public Base2
{
public:
        typedef Base2 Tparent;

        using Tparent::Tptr;
    //typedef Tparent::Tptr Tptr;

        inline void test(const Tptr obj)throw();
};

/*

5.cpp:18: error: ISO C++ forbids declaration of 'Tptr' with no type
5.cpp:18: error: cannot declare member 'Base<A, Ext1<int, int> >::Tptr'
within 'Derived<A>'
5.cpp:18: error: expected ';' before 'Tptr'
5.cpp:20: error: expected ',' or '...' before 'obj'
5.cpp:20: error: ISO C++ forbids declaration of 'Tptr' with no type

*/

_______________________________________________
help-gplusplus mailing list
help-gplusplus@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gplusplus

Reply via email to