Express edition はOSSの姿勢を変えるか?
ご承知のとおり、VisualStudio Express edition は無料ダウンロードになりました。 いくらかのオープンソースプロジェクトが、コンパイラのサポートに関する姿勢を変えるように思えます。 あなたはVisualStudio.NET C++ Expressを使う際に.NETを気にする必要はありません。無料のVisualStudio.NET C++でも、CLR(VM)なしで実行可能なネイティブコードをビルドすることができます。[1]

OSS プロジェクトは gccCode::BlocksVisualStudio C++ 6 などのフリーのコンパイラ、IDE、および古い環境へのサポートを要求されがちです。しかし……今や OSS プロジェクトが、VisualC++ 2003 以下の古い IDE をサポートする必要があるでしょうか? VisualStudio Express edition は、microsoft の最新コンパイラを持っています。

VisualC++ 6 は古いコンパイラです。開発者はテンプレートを使うコードをうまく書くことができないケースがあります。私はMarijuanaさんからこの問題を聞いたとき、とても驚きました。なんと、次のようなコードを書くことができないのです:

std::List<SceneNode>::iterator itr = ...

このコードは構文エラーを引き起こします。信じられません……これではSTLを用いたプログラムを書くことは事実上不可能です。開発者は、この制限を避けるのに'typedef'を使用しなければなりません。

typedef std::List<SceneNode> SCENENODE_LIST_T;
SCENENODE_LIST_T::iterator itr = ...

VC++6が現役だった頃に、VisualStudioシリーズを使ったことがなかったので、私はこの問題を知りませんでした。 もちろん、gccCodeWarriorなどでは、このような問題には遭遇しません。

VisualC++ 6のこのような制約の下では、STLの本格的な使用は困難です。OSSプロジェクトが古いVisualC++のサポートを諦めるなら、彼らはこの制限から自分たちのソースコードを解放することができます。OGREプロジェクトは以下の意見を発表しました:

Lastly, if you use Visual C++, note that we have dropped support for old versions and officially support only VC7.1 (.Net 2003) and VC8 (.Net 2005) with this release. The standards support in older versions of VC++ (especially VC6) was just too bug ridden to tolerate any longer since it was constraining our development, and the upgrade path to VC8 Express is free, so there is no reason to continue to use outdated versions. You also have the choice of Code::Blocks.

これは正しい判断のように思えます。

[1]このケースでは、プロジェクトを構成する際に「マネージコードの使用」にチェックを入れてはいけません。
|