ketvirtadienis, kovo 22, 2007

ground control to Major Tom, take your protein pills and put the helmet on

C++ paniurnėjimai:

Šiandie atradau naują typename panaudojimą (apart template <typename T>) . Išties jis buvo skirtas priverstinai nurodyti kompileriui, kad simbolis yra tipas, t.y.

template <typename T>
struct TemplatedType
{
typedef std::vector<T> vector_type;
};

Ir jei defaininsime tipą my_vector_type:

typedef TemplatedType<int>::vector_type my_vector_type;

Nieko nesigaus, kompileris pasilieka galimybę galvoti, kad egzistuoja statinis TemplatedType<int>::vector_type TemplatedType klasės kintamamasis, ir jam reikia priverstinai nurodyt su typename, jog tai yra tipas:

typedef typename TemplatedType<int>::vector_type my_vector_type;

Uh.