std::ignore

< cpp‎ | utility‎ | tuple
定义于头文件 <tuple>
const /*unspecified*/ ignore;
(C++11 起)
(C++17 前)
inline constexpr /*unspecified*/ ignore;
(C++17 起)

任何值均可赋给而无效果的未指定类型的对象。目的是令 std::tie 在解包 std::tuple 时作为不使用的参数的占位符使用。

可能的实现

namespace detail {
struct ignore_t {
    template <typename T>
    constexpr // C++14 起要求
    void operator=(T&&) const noexcept {}
};
}
inline constexpr detail::ignore_t ignore; // C++17 前仅 'const'

示例

解包 set.insert() 所返回的 pair ,但只保存布尔值。

#include <iostream>
#include <string>
#include <set>
#include <tuple>
 
int main()
{
    std::set<std::string> set_of_str;
    bool inserted = false;
    std::tie(std::ignore, inserted) = set_of_str.insert("Test");
    if (inserted) {
        std::cout << "Value was inserted successfully\n";
    }
}

输出:

Value was inserted successfully

参阅

创建左值引用的 tuple,或将 tuple 解包为独立对象
(函数模板)