很抱歉,如果这个问题很愚蠢(我认为是这样),但我仍然是学习 C++ 的初学者,我花了一整天的时间试图找到解决方案,但找不到任何解决方案。
在通过 YouTube 视频学习 C++ 时,我尝试使用 Visual Studio Code 和 gcc 编译器版本 13.2.0 应用以下简单代码,出现以下问题:
代码是:
#include <iostream>
#include <concepts>
template <typename T> requires std::integral<T> T maximum (T a, T b)
{
return (a>b)?a:b;
}
int main ()
{
char a1{10};
char a2{20};
auto a = maximum(a1,a2);
std::cout << "a : " << a << std::endl;
int b1{11};
int b2{5};
auto b = maximum(b1,b2);
std::cout << "b : " << b << std::endl;
double c1{45.9};
double c2{12.4};
auto c = maximum(c1,c2);
std::cout << "c : " << c << std::endl;
return 0;
}
看起来像是
的内容没有被认可或类似的事情。
我尝试按照某人的建议写
这些是tasks.json的内容,我应该使用c ++ 20,其中包含/支持
块引用
:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "Build with GCC 13.2.0",
"command": "C:\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"-std=c++20",
"${workspaceFolder}/*.cpp",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "compiler: C:\\mingw64\\bin\\g++.exe"
}
]
}
预先感谢您的帮助。
这里有几个问题。
问题1
标识符
requires
只能在 C++20(及以上)中使用。同样,std::integral 也仅适用于 C++20。因此,您需要确保您使用的是 C++20 或更高版本。
问题2
接下来,由于
double
不是整型,所以调用maximum(c1,c2)
无效。