, ConcreteTable , T:: RT. , ++ ( , undefined), , ( , , , ) - const bool, false, ).
typedefs, , , RT ,
template <class T, class RT>
class Table
{
public:
typedef typename RT Zot;
};
class ConcreteTable : public Table<ConcreteTable, Record>
{
public:
typedef Record RT;
};
, RT Table<>::Zot
,
template <class T>
class Table
{
public:
struct S {
typedef typename RT Zot;
};
};
class ConcreteTable : public Table<ConcreteTable>
{
public:
typedef Record RT;
};
struct
template <class T>
struct TableTraits<T>;
template <class T>
struct TableTraits<Table<T> > {
typedef typename T::RT Zot;
};
, / , , .
void f(typename T::RT*);
template <class U>
void f(U*);
T:: RT , , ConcreteTable .