最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

class template
<functional>

# std::is_placeholder(C++11)

    namespace std {
      template <class T>
      struct is_placeholder;

      template <class T>
      inline constexpr int is_placeholder_v = is_placeholder<T>::value; // C++17
    }

## 概要

型 `T` がプレースホルダかどうかを判別する

## 要件

`is_placeholder`は、型 `T`がプレースホルダを示す(`std::placeholders::_1`, `std::placeholders::_2`, ...)ならば `std::integral_constant<int, J>` から派生(ただし、`J` は何番目のプレースホルダを示すかの値)し、そうでなければ `std::integral_constant<int, 0>` から派生する。

ヒント: ユーザ定義の型に対して `is_placeholder` を特殊化してプレースホルダとして扱わせることも可能である。

## 例

    #include <functional>

    static_assert(std::is_placeholder<decltype(std::placeholders::_1)>::value, "a placeholder");
    static_assert(!std::is_placeholder< std::less<int> >::value, "not a placeholder");

    int main() {}

### 出力

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: ??

## 参照

- P0006R0 Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17