gpt4 book ai didi

c++ - 为什么 make_pair 在 C++ 11 中失败?

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

<分区>

以下代码在编译为 C++ 98 时运行良好,但编译为 C++ 11 时失败。为什么?

#include <iostream>
#include <utility>

using namespace std;

int main()
{
int u = 1;
pair<int, int> p = make_pair<int, int>(0, u);
cout << p.first << " " << p.second << "\n";
}

g++ (Debian 8.3.0-6) 8.3.0 的错误信息是:

foo.cpp: In function ‘int main()’:
foo.cpp:9:45: error: no matching function for call to ‘make_pair<int, int>(int, int&)’
pair<int, int> p = make_pair<int, int>(0, u);
^

我知道我可以通过从 make_pair 中删除模板说明符并让编译器自行决定类型来简单地编译它。但我有兴趣了解从 C++ 98 到 C++ 11 的哪些变化使此代码不再合规。

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