Tob*_*bey 2 c++ tuples c++11 stdtuple
问题很简单,为什么这段代码不起作用:
#include <tuple>
int main( int argc, char* argv[]) {
const int a,b = std::tie(std::make_pair(1,2));
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
g ++给了我这个错误:
./test.cpp:在函数'int main(int,char**)'中:./ test.cpp:4:13:error:uninitialized const'a'[-fpermissive] const int a,b = std ::领带(标准:: make_pair(1,2)); ^ ./test.cpp:4:42:
error:无法将类型为'std :: pair&'的非const左值引用绑定到类型为'std :: pair'的rvalue
const int a,b = std :: tie(std :: make_pair(1,2));
使用这种模式(const或非const),我无法通过值获得任何类似元组的返回.这是一个更好的方式来做我想在这里实现的目标吗?
const int a,b = std::tie(...)
Run Code Online (Sandbox Code Playgroud)
这不符合你的想法.它创建了两个const int变量:
a,未初始化
b,初始化为 std::tie(...)
正确的使用std::tie方法如下:
int a, b;
std::tie(a, b) = std::make_pair(1, 2);
Run Code Online (Sandbox Code Playgroud)
请注意,您需要a并且b已经声明和非声明const.
在C++ 17中,您可以使用结构化绑定:
const auto [a, b] = std::make_pair(1, 2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |