1

Visual Studio 2005コンパイラを使用してolb3dライブラリをビルドしたいのですが、テンプレートエラーが原因で失敗します。

具体的には、次の式が問題になるようです。

void function(T u[Lattice<T>::d])

プロジェクトのWebサイトには、おそらく私のコンパイラはそのような複雑なテンプレート式を使用できないと記載されています。gcc3.4.1を使用する必要があります。

私の質問は、vs c ++コンパイラをアップグレードして、gcc3.4.1としてのレベルでテンプレート式を処理できるようにする方法があるかどうかです。新しいバージョンのビジュアルスタジオを入手すると役立つかもしれません。

乾杯C。

4

2 に答える 2

2

VisualStudioの新しいバージョンを購入します。2005年はかなり古く、あまり適合していません。Visual C ++ Expressをダウンロードすることで、いつでも新しいものを最初にテストできます。

于 2010-05-11T13:17:08.287 に答える
0

コンパイラは、テンプレートタイプを推測できないと言っています。コードでタイプ自体を指定することで、いつでもそれを助けることができます。

foo<int>(some_int_array);

しかし、その間の部分[]がつまずくのは完全に無意味です。配列はポインタに減衰し、値はそもそも無視されます。これが実際の例である場合は、その部分をコメントアウトすることができます。

配列を参照してみると、VC++2005でも問題はないようです。

template <class T>
void function(T (&arr)[Lattice<T>::n]);

(コンパイルされないケースは、そのようなことが機能するかどうかを誰もチェックすることを気にしないほど無意味である可能性はありますか?)

于 2010-05-11T16:10:41.710 に答える