1

我想用我的 Visual Studio 2005 编译器构建 olb3d 库,但由于模板错误而失败。

更具体地说,以下表达式似乎是一个问题:

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

在该项目的网站上说,大概我的编译器无法处理如此复杂的模板表达式 - 应该使用 gcc 3.4.1。

我现在的问题是,是否有办法升级我的 vs c++ 编译器,以便它可以处理 gcc 3.4.1 级别的模板表达式?如果我获得更新版本的 Visual Studio 可能会有所帮助?

干杯 C.

4

2 回答 2

2

购买更新版本的 Visual Studio。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 回答