假设您需要调用以下方法:
std::tuple<int, int, int> foo();
在C ++ 17中,您可以调用该函数并在一行中解压缩该元组:
auto [a, b, c] = foo();
现在,我怎么能继续只存储b
和c
并丢弃a
?
目前,我只知道两个选择:
1-自动解压缩时可以使用虚拟变量
但是,哑变量将不被使用,并且会发出警告,因此,如果我想使该警告保持沉默,该代码将非常令人讨厌:
#pragma warning(push)
#pragma warning(disable:4101)
// ReSharper disable once CppDeclaratorNeverUsed
auto [_, b, c] = foo();
#pragma warning(pop)
2-我可以存储整个元组,并用于std::get
检索对我唯一需要的变量的引用。该代码不太令人讨厌,但语法也不太简单。
此外,对于我们要保留在元组中的每个新值,此代码的大小增加一行。
auto tuple = foo();
int b = std::get<1>(tuple);
int c = std::get<2>(tuple);
是否存在另一种更直接的方法来仅将元组中的某些参数解包?
[[maybe_unused]]
。