namespace std {
using nullptr_t = decltype(nullptr);
}
概要
ヌルポインタを表すポインタリテラルnullptr
の型。
例
#include <iostream>
#include <type_traits>
int main()
{
std::cout << "sizeof(nullptr_t): " << sizeof(std::nullptr_t) << std::endl; // sizeof(void*)と同サイズ
std::cout << "is_object<nullptr_t>: " << std::is_object<std::nullptr_t>::value << std::endl;
std::cout << "is_scalar<nullptr_t>: " << std::is_scalar<std::nullptr_t>::value << std::endl; // 0 on VS 2010~2012
std::cout << "is_union<nullptr_t>: " << std::is_union<std::nullptr_t>::value << std::endl;
std::cout << "is_array<nullptr_t>: " << std::is_array<std::nullptr_t>::value << std::endl;
std::cout << "is_class<nullptr_t>: " << std::is_class<std::nullptr_t>::value << std::endl;
}
xxxxxxxxxx
#include <iostream>
#include <type_traits>
int main()
{
std::cout << "sizeof(nullptr_t): " << sizeof(std::nullptr_t) << std::endl; // sizeof(void*)と同サイズ
std::cout << "is_object<nullptr_t>: " << std::is_object<std::nullptr_t>::value << std::endl;
std::cout << "is_scalar<nullptr_t>: " << std::is_scalar<std::nullptr_t>::value << std::endl; // 0 on VS 2010~2012
std::cout << "is_union<nullptr_t>: " << std::is_union<std::nullptr_t>::value << std::endl;
std::cout << "is_array<nullptr_t>: " << std::is_array<std::nullptr_t>::value << std::endl;
std::cout << "is_class<nullptr_t>: " << std::is_class<std::nullptr_t>::value << std::endl;
}
出力例
sizeof(nullptr_t): 8
is_object<nullptr_t>: 1
is_scalar<nullptr_t>: 1
is_union<nullptr_t>: 0
is_array<nullptr_t>: 0
is_class<nullptr_t>: 0
バージョン
言語
- C++11
処理系
- Clang: 3.1 ✅
- GCC: 4.6.4 ✅
- ICC: ??
- Visual C++: 2010 ✅, 2012 ✅, 2013 ✅
- 2010, 2012では
is_scalar<nullptr_t>
がfalse_type
(からの派生クラス)となっているバグがある。
- 2010, 2012では