0
在下面的代碼中,我必須將其轉換爲TDestination作爲boolean_cast以避免編譯器警告(從'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;
}
爲什麼你在第一時間使用VARIANT_? –
既不是。即使被模板mumbo-jumbo包圍,類型在'if'語句的兩個分支中都是相同的類型。如果你的'TDestination'是'bool',它也是'else'分支中的'bool',即使它的代碼沒有被執行。 –