名前空間
変種
操作

名前付き要件: NullablePointer (C++11以上)

提供: cppreference.com
< cpp‎ | named req
 
 
名前付き要件
基本
レイアウト
ライブラリ全体
(C++11)
NullablePointer
(C++11)
(C++11)
コンテナ
コンテナの要素
イテレータ
ストリーム入出力
乱数
並行処理
(C++11)

(C++11)
(C++11)
その他
 

その型が std::nullptr_t のオブジェクトと比較可能なポインタライクなオブジェクトであることを指定します。

[編集] 要件

この型は以下の要件をすべて満たさなければなりません。

さらに、この型の値初期化されたオブジェクトは、この型のヌル値を生成しなければなりません。 このヌル値はそれ自身とのみ同等でなければなりません。 この型のデフォルト初期化は不定値を持っていても構いません。

この型のオブジェクトは分脈的に bool に変換可能でなければなりません。 この変換の効果はその値がそのヌル値と同等であれば false を返し、そうでなければ true を返します。

この型が行う操作は例外を投げてはなりません。

この型は、この型の2つの値 p, q および std::nullptr_t 型 (またはその const 修飾された型) の値 np が与えられたとき、以下の式を満たさなければなりません。

効果
Type p(np);

Type p = np;

以後 pnullptr と同等になる。
Type(np) nullptr と同等な一時オブジェクト。
p = np Type& を返さなければならず、以後 pnullptr と同等になる。
p != q 分脈的に bool に変換可能な値を返さなければならない。 効果は !(p == q) である。
p == np

np == p

分脈的に bool に変換可能な値を返さなければならない。 効果は (p == Type()) である。
p != np

np != p

分脈的に bool に変換可能な値を返さなければならない。 効果は !(p == np) である。

[編集] ノート

逆参照 (operator*operator->) は NullablePointer 型の要件でないことに注意してください。 これらの要件を満たす最小限の型は以下のようなものです。

class handle {
    int id;
  public:
    handle(std::nullptr_t = nullptr) : id(0) { }
    explicit operator bool() { return id != 0; }
    friend bool operator ==(handle l, handle r) { return l.id == r.id; }
    friend bool operator !=(handle l, handle r) { return !(l == r); }
};

[編集] 標準ライブラリ

以下の型は NullablePointer を満たさなければなりません。