У меня есть две библиотеки, с которыми я работаю, и для удобства я написал конвертер между некоторыми типами/структурами, которые они используют.
template<typename T>
struct unsupportedType : std::false_type
{};
template<typename T>
FormatB getFormat()
{
static_assert(
unsupportedType<T>::value, "This is not supported!");
}
template<>
FormatB getFormat<FormatA::type1>()
{
return FormatB(//some parameters);
}
template<>
FormatB getFormat<FormatA::type2>()
{
return FormatB(//some other parameters);
}
Теперь из-за структуры unsupportedType
компилятор не сразу видит, что утверждение всегда терпит неудачу и, таким образом, не вызывает ошибку компиляции, если не-специализированная версия не называется где-то. Однако компилятор также не знает, что оператор return после static_assert
не нужен. Я не просто хочу разместить произвольное выражение return после утверждения, чтобы избавиться от предупреждения.
Вопрос: Что такое чистый способ избавиться от предупреждения?