gpt4 book ai didi

C++ 11 - constexpr函数中的static_assert?

转载 作者:IT老高 更新时间:2023-10-28 14:00:04 26 4
gpt4 key购买 nike

如何在 constexpr 函数中正确执行 static_assert?例如:

constexpr int do_something(int x)
{
static_assert(x > 0, "x must be > 0");
return x + 5;
}

这不是有效的 C++11 代码,因为 constexpr 函数必须只包含 return 语句。我不认为标准对此有异常(exception),尽管 GCC 4.7 不允许我编译这段代码。

最佳答案

This is not valid C++11 code, because a constexpr function must only contain a return statement.

这是不正确的。 static_assertconstexpr功能很好。 not 很好的是在常量表达式中使用函数参数,就像你做的那样。

如果x <= 0,你可以抛出.在需要常量表达式的上下文中调用函数将无法编译

constexpr int do_something(int x) {
return x > 0 ? (x + 5) : (throw std::logic_error("x must be > 0"));
}

关于C++ 11 - constexpr函数中的static_assert?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8626055/

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