コンテンツにスキップ

yu::tuples::regular_applicable

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

namespace yu::tuples {
    template <typename F, typename T>
    concept regular_applicable = applicable<T>;
}

概要

regular_applicableは,任意の関数呼び出し可能な型Fに対して,型Tの要素をTupleとして展開して,正則呼び出し可能であることを表すコンセプトである. ただし,このことは構文的には検証されず,純粋に意味論的な制約として存在する.

std::regular_invocableapply版である.

#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