How can I provide template specializations for typedefs of the same type?

后端 未结 4 579
长情又很酷
长情又很酷 2021-01-20 02:49

A 3rd party SDK defines several typedefs, e.g.:

typedef unsigned char SDK_BYTE
typedef double SDK_DOUBLE
typedef unsigned char SDK_BOOLEAN

4条回答
  •  日久生厌
    2021-01-20 03:21

    Just to be complete, using the BOOST_STRONG_TYPEDEF the code could look like this:

    BOOST_STRONG_TYPEDEF(SDK_BYTE, mySDK_BYTE)
    BOOST_STRONG_TYPEDEF(SDK_BOOLEAN, mySDK_BOOLEAN)
    
    template<>
    mySDK_BYTE variant_cast::operator()(const SdkVariant& variant)
    {
        SDK_BYTE value;
        bool res = variant.toByte(value);
        if (!res)
            diePainfully();
        return value;
    }
    
    template<>
    mySDK_BOOLEAN variant_cast::operator()(const SdkVariant& variant)
    {
        SDK_BOOLEAN value;
        bool res = variant.toByte(value);
        if (!res)
            diePainfully();
        return value;
    }
    

    This actually works. The only downside is, that for retrieving an SDK_BOOLEAN or SDK_BYTE one now has to write variant_cast(myVariant) or variant_cast(myVariant). Thanks Xeo.

提交回复
热议问题