C++0x の最新ドラフトが N3225 に

本の虫: post-Batavia mailiingの簡易レビュー


C++0x の最新ドラフトが N3225 になったようです。


今回のドラフトにおける主な変更点ですが、

  • ユーザ定義のデストラクタ、ムーブ、コピーが存在する場合
    • 暗黙のムーブは生成されない
    • 暗黙のコピーは deprecated に
  • noexcept(auto) の追加、*1デストラクタ及び delete 演算子をデフォルトで noexcept に
  • ユーザ定義されたデストラクタは、明示的に例外指定をされていない限り、デストラクタ本体の記述に依らず、自動生成されたデストラクタと同じ例外指定を持つように*2
  • attribute の一部を削除、代わりに文脈依存キーワード final, override を追加
  • の一部メタ関数 (has_xxx_yyy) の名前を変更

辺りでしょうか。
その他の変更点、および解説は

辺りを参照してください。


個人的に大きいと思ってるのが、前に記事にも書いたコピー自動生成の deprecated 化と、
それから に対する変更ですね。


新しいドラフト(重いので注意!)、あるいは提案のペーパーを読むと分かりますが、
今回の変更では、 has_default_constructor から has_nothrow_move_assign までという、
少なくない数のメタ関数の名前(と詳細)が変更されています。


これらは、まぁ確かに妥当な変更ではあるのですが、
この中には has_trivial_destructor など、僕が普段から使うようなものも多く、
既存のコードを変更する必要があるので、少々対応が面倒そうです。


まぁ grep かければ分かる問題なので、今はとりあえず放置するとして、
コンパイラが対応したら忘れないで変更すればいいかな、と思います。

// っていうか FCD 出した後に行う変更としては地味にクリティカルな気がする
// まぁなんか二度目のFCDを発行するかもしれないみたいですが
// なんでもいいから、とにかく早く確定させて欲しいところ(切実

*1:提案のみだったようです

*2:指摘コメント感謝

メタプログラミング友の会に参加してきた

メタプログラミング友の会 に参加してきました。発表/参加された皆様、お疲れさまでした。


どれも素敵な発表でしたが、個人的に特に気になったのは、

の二点。


Polemy はこの勉強会のために作られた言語で、
一つのコードを複数の方法で解釈することができるみたいです。
まだ弄ってないのでスライド内容の鵜呑みになりますが、
例えば型レイヤー @type というのを作って、必要な定義を行うと、
ある式に対して @type( 式 ) と書けば、その式の型を得られる、
という感じらしいです。
面白そうなので後でいじってみようかと。


XbyakC++ から実行時にアセンブリ言語に触るときに使うライブラリで、
NASMっぽい感じで命令をリストアップすればそれで扱えるようで、素敵です。
僕の興味のある言語処理系の製作において、アセンブリ言語を扱う必要は、
早かれ遅かれ出てくると思うので、その時に使えればいいかなぁと。


あと @kmizuさんNemerle の話とか、いろいろと
為になるお話を聞けたので、今回は参加できてよかったです。
次回があるなら、是非参加してみたい、そう思える勉強会でした。