std::nullptr_t
提供: cppreference.com
ヘッダ <cstddef> で定義 | ||
typedef decltype(nullptr) nullptr_t; | (C++11以上) | |
std::nullptr_t はヌルポインタリテラル nullptr の型です。 これは独立した型で、それ自身はポインタ型でもメンバポインタ型でもありません。
[編集]例
2つ以上のオーバーロードが異なるポインタ型を取る場合、ヌルポインタ引数を取るためには std::nullptr_t に対するオーバーロードが必要です。
Run this code
#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
[編集]関連項目
nullptr(C++11) | ヌルポインタ値を指定するポインタリテラル |
処理系定義のヌルポインタ定数 (マクロ定数) | |
(C++14) | 型が std::nullptr_t かどうか調べます (クラステンプレート) |