Рассмотрим код:
template <typename T>
CByteArray serialize(const T& value)
{
if (std::is_pod<T>::value)
return serializePodType(value);
else if (std::is_convertible<T, Variant>::value)
return serialize(Variant(value));
else
{
assert(0 == "Unsupported type");
return CByteArray();
}
}
Очевидно, что компилятор прав, чтобы дать мне это предупреждение для if (std::is_pod<T>::value)
и т.д., но как мне обойти это? Я не могу найти способ избежать этой проверки, и там нет static if
в С++ (пока).
Можно ли использовать принцип SFINAE, чтобы избежать этого if
?