std::byte 不是“std”的成员

DFD*_*ark 2 c++ gcc std ubuntu-18.04

我正在尝试学习 c++17 的新功能/噱头,但后来我到了 std::byte 并且由于某种未知的原因我似乎无法编译甚至最基本的“hello world”类型程序方式。

整个程序:

#include <cstddef>
int main(int argc, char* argv[])
{
    std::byte byte;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译命令:

g++ ./main.cpp
Run Code Online (Sandbox Code Playgroud)

但输出总是:

./main.cpp: In function ‘int main(int, char**)’:
./main.cpp:4:10: error: ‘byte’ is not a member of ‘std’
    std::byte byte;
Run Code Online (Sandbox Code Playgroud)

我使用 gcc 7.4.0 在 Ubuntu 18.04 上工作。我检查了“/usr/include/c++/7.4.0/”,头文件 cstddef 在那里,字节似乎已定义。

我也尝试过使用 clang:

clang++ ./main.cpp
Run Code Online (Sandbox Code Playgroud)

但结果是一样的。在这一点上,我只能认为 cstddef 已损坏/被窃听。有什么解决办法吗?

DFD*_*ark 8

作为???????在评论中指出我缺少 c++17 编译标志。正确的编译命令:

g++ -std=c++17 ./main.cpp
Run Code Online (Sandbox Code Playgroud)