C++0x - Defaulted and Deleted Functions

コンパイラが生成する関数(コンストラクタ, コピーコンストラクタ, 代入演算子, デストラクタ etc...)
のdefault/delete指定ができるようになる

struct hoge {
    hoge() = default; // コンパイラが生成するデフォルトコンストラクタを使う
};

インライン化の制御

struct hoge {
    virtual ~hoge();
};

hoge::~hoge() = default; // インライン化させない

コピーの制御

struct hoge {
    hoge() = default;
    hoge(const hoge&) = delete;
    hoge& operator=(const hoge&) = delete;
};


hoge h;     // OK
hoge h2(h); // エラー

h = h2; // エラー

new演算子の制御

struct hoge {
    void* operator new(std::size_t) = delete;
};

hoge *h = new hoge[3]; // エラー



C++0x言語拡張まとめ