>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