gpt4 book ai didi

c++ - 以下 C++ 程序无法编译并显示各种错误

转载 作者:太空宇宙 更新时间:2023-11-04 16:08:49 26 4
gpt4 key购买 nike

所以我正在阅读有关 auto 和其他 C++11 std 功能的信息并制作了这个程序:

#include<iostream>
#include<tuple>
using namespace std;
template<typename T1, typename T2>
auto create_pair(const T1 &a, const T2 &b)
{

pair<T1, T2> p(a, b);
return p;

}
int main()
{
auto p1 = create_pair(4, 5.6);
pair<int, float> p(p1);
cout << get<0>(p);
cout << endl;
cout << get<1>(p);
return 0;

}

我的问题是 auto 是否可以按照 create_pair() 函数中规定的方式使用,或者是否存在一些其他解决方法来实现相同的结果。

用gcc编译时的错误信息是这样的:

create_pair function uses auto type specifier without return type.

最佳答案

自动返回类型推导是 C++14 的一项功能,如果使用 C++14 编译,您的代码将可以正常工作。返回类型位置中的 auto 关键字是 C++11 尾随返回类型功能的一部分,您可以在返回类型正前方用箭头和类型(例如, auto foo() -> int {...}).

如果没有宏,在 C++11 中最接近的是一个以单个语句(return 语句)作为主体的 lambda 函数,这不适用于模板,并且可能导致与函数是变量而不是函数。

使用宏,您可以得到 auto foo() RETURNS(2) 的效果,它会扩展为 auto foo() -> decltype(2) {return 2 ;}

附带说明一下,这个函数已经存在;它是 std::make_pair,它的实现比您的版本更有用。

关于c++ - 以下 C++ 程序无法编译并显示各种错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077627/

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