Комментарии:

template‹class TRet, class TP1›

class CDelegate1 {

 //…

};


template‹class TP1›

class CDelegate1‹bool, TP1› {

 //…

};


template‹class TRet, class TP1, class TP2›

class CDelegate2 {

 //…

};


template‹class TP1, class TP2›

class CDelegate2‹bool, TP1, TP2› {

//…

};

и т.д…

(Андрей 20.3.2003 12:22 )
... и статической T не надо

А мне как то больше понравился такой вариант (где нет статического T _t):

template‹class T›

class IsPointer {

private:

 struct TrueType {
char dummy_ [1];
 };

 struct FalseType { char dummy_ [2]; };

 struct PointerShim { PointerShim(const volatile void*);
};

 static TrueType ptr_discriminator(PointerShim);

 static FalseType ptr_discriminator(…);

 static T rett();

public:

 enum {value = sizeof(ptr_discriminator(rett())) == sizeof(TrueType)};

};


template‹›

class IsPointer‹void› {

public:

 enum {value = false};

};


Кстати, еще неплохо было бы дабавить IsArray, который таки почти смог добить Андрей Тарасевич в одном из топиков форума С++

PS Павел, кстати, эту же статью от вас я уже видел в каком то online издании… Или я ошибаюсь?

(Andrew S 7.3.2003 17:50 )
А ссылку на boost.org?

Почему не указал ссылку на boost.org? Там уж намного больше готовых функций, чем ты привёл.

(limax 7.3.2003 15:1 )







 

Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх