std::nullptr_t
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <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 かどうか調べます (クラステンプレート) |