◐ Shell
clean mode source ↗

std::nullptr_t - cppreference.com

提供: cppreference.com

<tbody> </tbody>

typedef decltype(nullptr) nullptr_t;

(C++11以上)

std::nullptr_t はヌルポインタリテラル nullptr の型です。 これは独立した型で、それ自身はポインタ型でもメンバポインタ型でもありません。

2つ以上のオーバーロードが異なるポインタ型を取る場合、ヌルポインタ引数を取るためには std::nullptr_t に対するオーバーロードが必要です。

#include <cstddef>
#include <iostream>

void f(int* pi)
{
   std::cout << "Pointer to integer overload\n";
}

void f(double* pd)
{
   std::cout << "Pointer to double overload\n";
}

void f(std::nullptr_t nullp)
{
   std::cout << "null pointer overload\n";
}

int main()
{
    int* pi; double* pd;

    f(pi);
    f(pd);
    f(nullptr);  // would be ambiguous without void f(nullptr_t)
    // f(0);  // ambiguous call: all three functions are candidates
    // f(NULL); // ambiguous if NULL is an integral null pointer constant 
                // (as is the case in most implementations)
}

出力:

Pointer to integer overload
Pointer to double overload
null pointer overload

関連項目