gpt4 book ai didi

c++ - 使用static_assert时如何避免没有返回表达式的警告?

转载 作者:IT老高 更新时间:2023-10-28 21:50:34 26 4
gpt4 key购买 nike

我有两个库可以使用,并且为了方便起见,我在它们使用的一些类型/结构之间编写了一个转换器。

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 结构,编译器不会立即看到断言将始终失败,因此如果未在某处调用非专业版本,则不会引发编译错误。但是,编译器因此也不知道 static_assert 之后的 return 语句是不必要的。我不只是想在断言之后放置一个任意的 return 语句来消除警告。

问题:什么是消除警告的干净方法?

最佳答案

我会尽量避免 static_assert,使用类似的东西

template<typename T> FormatB getFormat()=delete;

然后编译器编写者可以改进这些错误消息。

关于c++ - 使用static_assert时如何避免没有返回表达式的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com