我经常写一些片段
int x,y,z; tie(x,y,z) = g[19];
Run Code Online (Sandbox Code Playgroud)
例如,g早先宣布的地方
vector<tuple<int,int,int>> g(100);
Run Code Online (Sandbox Code Playgroud)
问题是,也许以后我真的想要x并y指向g引用的内部,并且重构是丑陋的,例如
int &x = get<0>(g[19]);
int &y = get<1>(g[19]);
int &z = get<2>(g[19]);
Run Code Online (Sandbox Code Playgroud)
有时甚至更糟,例如,如果访问是一个更复杂的表达
tuple<int,int,int> &p = g[19]; // if the rhs was actually more complicated
int &x = get<0>(p);
int &y = get<1>(p);
int &z = get<2>(p);
Run Code Online (Sandbox Code Playgroud)
是否有更好的重构,更多的是分配的风格(...)?
我理解的困难在于参考文献坚持在他们的声明中完全初始化.所以,换句话说,有没有办法在c ++中使用类似tie语法进行多变量初始化(这也会使早期的非引用用法更清晰)?
c++ ×1