OpenC++: C++のMOP拡張

東工大千葉先生の創った言語OpenC++はC++を拡張してMOP: Metaobject Protocolに対応させたものだ.
http://www.csg.is.titech.ac.jp/~chiba/openc++.html
本質的に静的なC++にマッチさせるため,OpenC++ではメタオブジェクト(構文木を保持する)は主にコンパイル時に仕事を行う.OpenC++コンパイラC++へのトランスレータプリプロセッサ)として実装されており,メタオブジェクトによるOOPの制御は静的なC++ソースに変換され,C++レベルで十分に最適化され,オーヴァヘッドもほとんどないとのこと.ただしOpenC++ソースを吐いて再帰的に変換する技も使えるらしい.実行時にもある程度はメタオブジェクトを利用することができるらしいが,C++は識別子に関する情報を基本的に扱わないので,「クラスのメンバ一覧」とかを実現するにはマクロの文字列連結演算子に頼らざるを得ないようだ.それはともかくユーザ定義のランタイムをMOPによって暗黙のうちに呼び出すスタイルは便利そうだ.