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

履歴 編集

type-alias
<type_traits>

# std::bool_constant(C++17)

    namespace std {
      template <bool B>
      using bool_constant = integral_constant<bool, B>;
    }

## 概要

`bool_constant` は、真理値型の定数を表す型である。

汎用的な整数型の定数を表す`integral_constant`の別名として定義される。

## 例

    #include <iostream>
    #include <type_traits>

    // bool型の定数を受け取る
    template <bool B>
    void f(std::bool_constant<B>)
    {
      constexpr bool b = B;
      std::cout << std::boolalpha << b << std::endl;
    }

    int main()
    {
      // bool型定数を表すために、事前に用意された型
      f(std::true_type{});
      f(std::false_type{});

      // 直接bool_constantを使用する
      f(std::bool_constant<true>{});

      // bool_constantの元となっているintegral_constantを使用する
      f(std::integral_constant<bool, true>{});
    }

### 出力

    true
    false
    true
    true

## バージョン

### 言語

- C++17

### 処理系

- Clang: 3.7.1 ✅
- GCC: 6.1 ✅
- Visual C++: ??

## 関連項目

- `true_type`
- `false_type`

## 参照

- N4389 Wording for `bool_constant`, revision 1