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

履歴 編集

class template
<type_traits>

# std::is_null_pointer(C++14)

    namespace std {
      template <class T>
      struct is_null_pointer;

      template <class T>
      inline constexpr bool is_null_pointer_v = is_null_pointer<T>::value; // C++17
    }

## 概要

型`T`が`nullptr_t`か調べる

## 効果

`is_null_pointer`は、型`T`が`nullptr_t`であれば`true_type`から派生し、そうでなければ`false_type`から派生する。

## 例

    #include <type_traits>

    static_assert(std::is_null_pointer<std::nullptr_t>::value == true,
                  "value == true, nullptr_t is nullptr type");
    static_assert(std::is_same<std::is_null_pointer<std::nullptr_t>::value_type, bool>::value,
                  "value_type == bool");
    static_assert(std::is_same<std::is_null_pointer<std::nullptr_t>::type, std::true_type>::value,
                  "type == true_type");
    static_assert(std::is_null_pointer<std::nullptr_t>() == true,
                  "is_null_pointer<nullptr_t>() == true");

    static_assert(std::is_null_pointer<const std::nullptr_t>::value == true,
                  "value == false, const nullptr_t is nullptr type");

    static_assert(std::is_null_pointer<int>::value == false,
                  "value == false, int isn't nullptr type");

    int main(){}

### 出力

## バージョン

### 言語

- C++14

### 処理系

- Clang: 3.4 ✅
- GCC: 4.9 ✅
- Visual C++: 2015 ✅

## 参照

- LWG Issue 2247. Type traits and `std::nullptr_t`
- P0006R0 Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17