nullptr_tいくつかのコードを読んで、新しい C++11だけをパラメーターとして受け入れるクラスを見つけました。クラスは以下のようになります。
を使用して排他的にオブジェクトを構築できるのは正しいnullptrですか?
class CA {
public:
CA(nullptr_t) {}
};
この規格は、§2.14.7.1 で次のように規定しています。
ポインタ リテラルはキーワード
nullptrです。タイプの prvalue ですstd::nullptr_t。[ 注:std::nullptr_tは、ポインター型でもメンバー型へのポインターでもない特殊な型です。むしろ、この型の prvalue はヌル ポインター定数であり、ヌル ポインター値またはヌル メンバー ポインター値に変換できます。—文末脚注]
type の唯一の prvalue はnullptr_t、nullptr§4.10 および §4.11 で指定された規則に従って、他のポインター型に変換できるものです。
std::nullptr_t他の整数リテラルは、 §4.10.1 に従って型の値に変換できます。
NULL ポインター定数は、値ゼロまたは型の prvalue を持つ整数リテラル (2.14.2)
std::nullptr_tです。
したがって、値がゼロまたは の整数リテラルを使用できますnullptr。
具体的には:
00u、0U0l、0L0ul、0uL、0Ul、0UL0ll、0LL0ull、0uLL、0ULLnullptrNULLいくつかのケースが欠けている可能性があるので、自由に修正してください。
ドキュメントによると:
std::nullptr_t は、ヌル ポインター リテラル nullptr の型です。
つまり、このオブジェクトはnullptrまたは対応する整数値でのみ構築できます (以下の回答のように)。必要な状況を示しているので、この例を確認してください。