C++14 で複数の戻り値を返す

std::tuple を使ってもいいのですが、C++14 の場合は内部クラスを戻り値として返すことも出来ます。

[コード]

#include <iostream>

auto
calculate(int x, int y){
    struct result_t{
        int add;
        int sub;
    };
    auto a = x + y;
    auto s = x - y;
    return result_t{ a, s };
    return 0;
}

int
main(){
    auto result = calculate(3, 2);
    std::cout << result.add << std::endl;
    std::cout << result.sub << std::endl;
    return 0;
}

[出力結果]

5
1

C++14 では型推論が強化されているのでだいぶ使い勝手がよくなった気はしますね。