0

以下のコードでは、boolean_cast の TDestination にキャストして、コンパイラの警告 (「VARIANT_BOOL」から「bool」への切り捨て) を回避する必要があります。これはコンパイラの問題ですか、それとも C++ の問題ですか?

template<typename TDestination, typename TSource>
TDestination boolean_cast(TSource source)
{
    TDestination destination;

    static_assert(std::is_same<TDestination, bool>::value || std::is_same<TDestination, VARIANT_BOOL>::value, "destination must be bool or VARIANT_BOOL");

    //convert to bool
    if (std::is_same<TDestination, bool>::value)
    {
        if (source)
            destination = true;
        else
            destination = false;
    }
    //convert to VARIANT_BOOL
    else
    {
        if (source)
            destination = (TDestination)VARIANT_TRUE;
        else
            destination = (TDestination)VARIANT_FALSE;
    }

    return destination;
}
4

1 に答える 1