2011-04-13

std::nullptr_tの型はポインターではない。

以下のコードを考えてもらいたい。果たして、値はtrueかfalseかどちらだろうか。

std::is_pointer<decltype(nullptr)>::value ;

これはfalseである。なぜならば、nullptrの型、decltype(nullptr)のtypedef名であるstd::nullptr_tは、ポインター型ではないからだ。もちろん、メンバーへのポインター型でもない。std::nullptr_tは、nullポインターに変換可能なprvalueの定数という扱いになっている。

No comments: