最終更新日時: 2026年05月07日 12時33分06秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<meta>

# std::meta::is_applicable_type(C++26)

    namespace std::meta {
      consteval bool is_applicable_type(info fn, info tuple);
    }

## 概要

関数型`fn`が、tuple-like型`tuple`の各要素型を引数として呼び出し可能かを判定する。

`std::apply()`で関数を呼び出せるかどうかの判定に対応する。

## 戻り値

`fn`が`tuple`の各要素型を順に引数として渡したときに呼び出し可能な場合に`true`を返す。

## 例外

`fn`または`tuple`が型を表さない場合、`std::meta::exception` 例外を送出する。

## 例

    #include <meta>
    #include <tuple>

    void f(int, double);

    int main() {
      // (int, double)の引数で呼び出し可能
      static_assert(std::meta::is_applicable_type(
        ^^decltype(f), ^^std::tuple<int, double>));

      // (int)では呼び出し不可
      static_assert(!std::meta::is_applicable_type(
        ^^decltype(f), ^^std::tuple<int>));
    }

### 出力

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: 16 (`-freflection` オプション指定) ❌
- Visual C++: ??

## 関連項目

- `is_nothrow_applicable_type`
- `apply_result`
- `std::apply()`

## 参照

- P3795R2 Miscellaneous Reflection Cleanup