yu::tuples::regular_applicable
この項目は仕様が確定していますが,現在はまだ実装されていません.
namespace yu::tuples {
template <typename F, typename T>
concept regular_applicable = applicable<T>;
}
概要
regular_applicableは,任意の関数呼び出し可能な型Fに対して,型Tの要素をTupleとして展開して,正則呼び出し可能であることを表すコンセプトである.
ただし,このことは構文的には検証されず,純粋に意味論的な制約として存在する.
std::regular_invocableのapply版である.
例
#include <tuple>
#include <iostream>
#include <yu/tuples/applicable.hpp>
void no_mutate(int& a) {}
auto mutate = [](int& a) { a += 42; }
int main() {
std::cout << std::boolalpha;
std::cout << yu::tuples::regular_applicable<decltype(&no_mutate), std::tuple<int>&> << std::endl;
// decltype(mutate)はregular_applicableのモデルではないが,構文上ではそれを検証できないため,trueと表示される.
std::cout << yu::tuples::regular_applicable<decltype(mutate), std::tuple<int>&> << std::endl;
}
出力
true
true