在调用返回std :: pair的函数时,仅返回std :: pair的第一个元素

时间:2018-03-21 17:20:25

标签: c++ std-pair

我正在使用一个返回std::pair的函数:

std::pair<bool, int> myFunction() {
    //Do something...

    if (success) {
        return {true, someValue};
    }
    else {
        return {false, someOtherValue};
    }
}

成功时,该对的第一个值为true,否则为false

一些调用myFunction()的函数使用返回的对的第二个值,而其他函数则不然。对于那些人,我这样称myFunction()

bool myOtherFunction() {
    //Do something...

    bool success;
    std::tie(success, std::ignore) = myFunction(); //I don't care about the pair's second value

    return success;
}

有没有办法避免直接声明bool success并返回myFunction()的返回值的第一个元素?

2 个答案:

答案 0 :(得分:9)

std::pair只是一个有2个值的结构;所以只需返回结构中的“第一个”项。

return myFunction().first;

答案 1 :(得分:6)

也许

return std::get<0>(myFunction());

return std::get<bool>(myFunction());