コンテンツにスキップ

yu::tuples::apply_result

この項目は仕様が確定していますが,現在はまだ実装されていません.

namespace yu::tuples {
    template <typename F, typename T>
    struct apply_result;

    template <typename F, typename T>
    using apply_result_t = typename apply_result<F, Tuple>::type;
}

概要

関数呼び出し可能な型Fに対して、 Tupleである型Tの要素を展開して関数呼び出しした場合の戻り値型を取得する。 std::invoke_resultapply版である.

効果

Tupleを展開して型Fのオブジェクトを関数呼び出しする式が有効であれば,その式の型をメンバ型エイリアスtypeに定義する.そうでなければ,メンバ型エイリアスtypeは定義されない.

#include <tuple>
#include <type_traits>
#include <string>

int add(int a, int b) { return a + b; }

int main() {
    static_assert(std::is_same_v<std::apply_result_t<decltype(&add), std::tuple<int, int>>, int>);
}

出力