template<UINT64 val>

    struct TFuck{

        static const byte value = (val & 0x01) + TFuck<(val>>1)>::value;

    };

    template<>

    struct TFuck<0>{

        static const byte value = 0;

    };


#define _STATIC_BITCOUNT(val) (TFuck<(UINT64)val>::value)