C++/CLI

C++ .NET 拡張として Managed C++ という言語が存在し,Visual C++ .NET 2002/2003 によってサポートされてきました.Managed C++ は Opaque Type *1 のサポートやマネージ/アンマネージ実行モードの混在をサポートしており,従来のネイティブコード資産を容易にマネージ型でラップすることが可能でした.例えばネイティブコードからなる DirectX をマネージ型にラップしたものが Managed DirectX ですが,この作業は Managed C++ によって行われています*2.このように .NET の普及にとって裏方的な役割が期待される Managed C++ ですが,一方でマネージコードとアンマネージコードを混在させた場合の制限が多く,また当初の Managed C++ には .NET 対応言語でありながら純粋なマネージコードのみからなるアセンブリを出力することが出来ないという制限さえありました.
こうして Managed C++ が「.NET に対応した C++ はここにあるよ」と矢面に立っている間に,Managed C++ の欠点を克服し,より実用的な言語を目指して策定が進められていたのが C++/CLI です.PJ Plauger 氏*3や Herb Sutter 氏*4といった著名人が策定作業に加わっていることで,C++/CLI について調べているとしばしば氏らの記事に出会います*5.これら C++ 業界の著名人による示唆に富んだ文章は,.NET 開発者以外の方にとっても一見の価値があるものかもしれません.
C++/CLI の最新ドラフトは以下で読むことが出来ます.
http://www.dinkumware.com/tc39-tg5-2005-019.pdf

*1:CLR が検査を行わない(CLR にとって不透明)な型で,C++ コンパイラ独自のデータ構造や ABI を持つことが出来る

*2:http://members.gamedev.net/managedworld/articles/interviews/tommiller.html

*3:Dinkumware STL で有名な Plauger 氏ですね.Visual C++ 使いはお世話になりまくりかと思います.

*4:The Exceptional C++ (asin:4894712709)で有名な氏は現在 Microsoft で Visual C++ の開発をされています.An interview with Microsoft's new Visual C++ .NET community liaison

*5:Plauger 氏のC++/CLIに関する翻訳記事がCマガジン2004年11月号に掲載されています.また,Herb 氏の blog には沢山の C++/CLI に関する資料があります