yu::tuples::applicable
この項目は仕様が確定していますが,現在はまだ実装されていません.
namespace yu::tuples {
template <typename F, typename T>
concept applicable = requires(F&& f, T&& t){
tuples::apply(std::forward<F>(f), std::forward<T>(t));
};
}
概要
applicableは,任意の関数呼び出し可能な型Fに対して,型Tの要素をTupleとして展開して呼び出し可能であることを表すコンセプトである.
std::invocableのapply版である.
例
#include <tuple>
#include <iostream>
#include <yu/tuples/applicable.hpp>
int add(int a, int b) { return a + b; }
int main() {
std::cout << std::boolalpha;
std::cout << yu::tuples::applicable<decltype(&add), std::tuple<int, int>> << std::endl;
std::cout << yu::tuples::applicable<decltype(&add), std::tuple<int>> << std::endl;
std::cout << yu::tuples::applicable<decltype(&add), int [2]> << std::endl;
std::cout << yu::tuples::applicable<decltype(&add), int [1]> << std::endl;
std::cout << yu::tuples::applicable<decltype(&add), int> << std::endl;
}
出力
true
false
true
false
false