命名空间"std"中没有成员"clamp"。

15

VS2015编译我的代码时报错,说命名空间"std"没有成员"clamp",虽然Intellisense可以正确地捕获它并告诉我参数和返回值。是的,我已经包含了头文件。

#include <Math/Matrix3D.h>
#include <glm.hpp>
#include <gtx/transform.hpp>
#include <Utils/Clock.h>

#include <algorithm>

void somefunc()
{
viewPos.y = std::clamp(viewPos.y, -0.95f, 0.95f);
}

4
std::clamp 看起来是 C++17 专属的。你的编译器标志是否设置为编译 C++17? - Kevin
1
Visual Studio 2015声称对于C++17的功能支持较少,即使您要求C++17的支持,我也不会感到惊讶如果它没有std::clamp - ShadowRanger
你可能想要检查并查看是否有头文件的实验版本。 - Mikel F
自VS2015.3以来,支持Clamp。 - mirh
目前遇到了同样的问题。这太奇怪了... - user11381830
1个回答

9

对于VSCode,假设已安装Microsoft C/C++扩展,并且在扩展的Include Path设置中设置了基本系统头文件,请转到设置中的C/C++配置页面并选择c++17作为C++标准。 - x__x
我已将我的C++语言标准设置为latest/std:c++2017/std:c++2020,但仍然找不到它。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接