const_cast //C++

/*
 AdaはC++同様オブジェクトが値型なので、
 代入は実体のコピーになります。
 Controlled型にすればAdjust(代入演算)も定義できますが、
 ウィンドウクラスみたいなのは実体がコピーできても意味がないので
 limitedを付けて代入できなくします。
 言うなればC++でコピーコンストラクタやoperator=をprivate宣言するようなものですか。

 で、DelphiのObject PascalはオブジェクトがJavaとかと同じ参照型なので
 実体のコピーはAssignメソッドを使います。
 VCLライブラリのウィンドウを表す基底クラスTWinControlにも、
 派生の都合上Assignが親クラスから引き継がれてて無意味に存在しているわけです。

 値型の言語と参照型の言語をごちゃまぜにしたのは失敗でした。

 (しかも、自分で自信が無くなってあわてて調べて見たら
 TWinControl同士Assignしたら例外が上がりますが、
 TCustomActionとの間ではちゃんとした動作が書かれてたりして…
 何か書く時はちゃんと調べなければいけませんね。ごめんなさい)
*/