Tuesday, May 18, 2010

О велосипедах


struct X {};

struct A {
template<class T>
struct B;

template<>
struct B<X> {};
};

int main() {
typedef A::B<X> b_t;
b_t b;
return 0;
}

Вот по какой-то причине так нельзя.

template<class T1, class T2>
struct Helper;

template<class T>
struct Helper<T, T> {};

struct X {};

struct A {
template<class T>
struct B : public Helper<T, X> {};
};

int main() {
typedef A::B<X> b_t;
b_t b;
return 0;
}

А так велосипед. Есть вариант покороче?