gpt4 book ai didi

c++ - 是否允许编译器评估静态断言中的重言式

转载 作者:可可西里 更新时间:2023-11-01 16:37:19 24 4
gpt4 key购买 nike

<分区>

在模板中提供 static_assert 通常很有帮助。在根本不应该以某种方式实例化模板的情况下,我经常这样做

template<typename T, typename = void>
struct S
{
static_assert(false, "Unconditional error");
static_assert(sizeof(T) != sizeof(T), "Error on instantiation");
};

template<typename T>
struct S<T, std::enable_if_t<std::is_integral_v<T>>>
{
// ...
};

第一个 static_assert 将立即失败,即使没有 S 的实例化,而第二个将成功,如果没有实例化将导致主模板。

第二个 static_assert 显然是重言式,但它“依赖”于 T 以实现预期效果。但这有保证吗?是否允许编译器评估这些重言式?

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