C++ の宣言で = delete2017年02月16日 22時20分58秒

C++11 での新しい構文。関数宣言で「= delete」とすることで、明示的に、操作を禁止することが出来る。
class C
{
    C& operator=( const C& ) = delete;
    C( const C& ) = delete;
};
これはクラスインスタンスの複製を禁止する。

以前は、宣言のみをしてコンパイラの自動生成を抑制し、実装を行わずに、リンクエラーを起こさせて禁止事項だと伝えるのが精いっぱいだった。そのため、宣言の周辺にはコメントとして、意図的に実装していない故が、記述されていた。

class C
{
    C& operator=( const C& ); // no-copy
    C( const C& ); // no-copy
};