Compiler errors g++;忽略指定的C++;标准

Compiler errors g++;忽略指定的C++;标准,compiler-errors,g++,Compiler Errors,G++,我使用编译标志-std=c++17运行g++ 尽管如此,我还是遇到了一些错误,这些错误通常意味着编译器无法访问C++17添加内容 #包括 #包括 int main(){ int-lo=1; inthi=99; int val=标准::夹具(-3,lo,hi); 如果编译器不能执行C++17,我怀疑它会抱怨你给它的标志 当我忘记包含所需的标题时,我经常会遇到这个错误,在您的特定情况下,algorithm 除此之外,我所能建议的就是在您的问题中包含gcc版本,并提供显示问题的最小完整程序,使我们能

我使用编译标志
-std=c++17运行g++

尽管如此,我还是遇到了一些错误,这些错误通常意味着编译器无法访问C++17添加内容

#包括
#包括
int main(){
int-lo=1;
inthi=99;
int val=标准::夹具(-3,lo,hi);

如果编译器不能执行C++17,我怀疑它会抱怨你给它的标志

当我忘记包含所需的标题时,我经常会遇到这个错误,在您的特定情况下,
algorithm


除此之外,我所能建议的就是在您的问题中包含
gcc
版本,并提供显示问题的最小完整程序,使我们能够更轻松地诊断问题

该版本很重要,因为根据合同通用条款
文件:

GCC9.1是第一个具有非实验性C++17支持的版本,因此C++17中添加的API和ABI功能自该版本以来一直保持稳定

因此,如果您使用的是早期版本,您可能会发现某些异常情况


为了帮助您,我的这个小示例似乎工作得很好,因此我建议您也尝试编译它:

#包括
#包括
int main(){
int-lo=1;
inthi=99;
int val=标准::夹具(-3,lo,hi);
std::coutg++--std=c++17-Wall-Wextra-Wpedantic-oprog.cpp
乘客:~>。/prog
1.

另一种可能性:即使您非常清楚地声明您正在使用该标志进行编译,也要检查它。使用C++14时我得到的错误与此非常相似:

prog.cpp:在函数“int main()”中:
程序cpp:7:20:错误:“clamp”不是“std”的成员
7 | int val=标准::夹具(-3,低,高);
|                    ^~~~~
暂时用以下内容替换有问题的行:


std::cout@F53:g++--version
给了你什么?确保它足够新。否则你的
gcc
命令会被修改以删除/忽略
-std=c++17
标志。它给了我6.3.0,哦,我猜这就是问题所在problem@F53:我会这么说。如果你看看6.3算法的libdocs(),里面没有什么。搜索
clamp
什么也找不到。
g++ -std=c++17 -c -o test.o test.cpp