|
Комментарии: 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 )
|
|