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_resultのapply版である.
効果
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>);
}
出力