gpt4 book ai didi

c++ - 使用 constexpr 编译时出错

转载 作者:太空狗 更新时间:2023-10-29 19:57:14 25 4
gpt4 key购买 nike

我正在尝试编译这段代码:

enum class Order : char
{
Little,
Big
};

constexpr Order get_order() {
uint16_t x = 1;
return *((uint8_t *) &x) == 0 ? Order::Big : Order::Little;
}

我用 -std=c++14 标志来做,但我得到了那个错误:

In function ‘constexpr byteorder::Order byteorder::get_order()’: /home/user/dev/c++/render/include/byteorder.h:19:1: error: body of constexpr function ‘constexpr byteorder::Order byteorder::get_order()’ not a return-statement

看起来像 c++11 !

如果 c++14 允许在 constexpr 函数中使用局部变量,那怎么可能呢?

Debian Jessie,gcc 4.9.2

最佳答案

clang 说:

test.cpp:9:17: error: constexpr function never produces a constant expression
[-Winvalid-constexpr]
constexpr Order get_order() {
^
test.cpp:11:14: note: cast that performs the conversions of a reinterpret_cast
is not allowed in a constant expression
return *((uint8_t *) &x) == 0 ? Order::Big : Order::Little;
^
1 error generated.

关于c++ - 使用 constexpr 编译时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39107261/

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