4
C ++ 17:打开元组时仅保留一些成员
假设您需要调用以下方法: 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); 是否存在另一种更直接的方法来仅将元组中的某些参数解包?