...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

@disable - dmd2.040

Add @disable attribute

import std.stdio;
struct A
{
	@disable this(this) {} // コピー禁止
}
void main()
{
	A a, b;
	a = b; // error
}

C++ではコピー禁止にするためにコピーコンストラクタやoperator=をprivateメンバにする方法がありましたが,D言語では同一モジュールのクラス間はfriend関係なので,その方法は使えませんでした.
@disableを使うとそれができます.
c++1xの =delete みたいなものですね.