C++ 矩阵模板库2和g++;4.7

C++ 矩阵模板库2和g++;4.7,c++,compiler-errors,64-bit,debian,g++-4.7,C++,Compiler Errors,64 Bit,Debian,G++ 4.7,几年前,我不得不在职业生涯的最后一个项目中使用MTL2库(这是一项强制性要求)。我必须处理现有的(相当旧的)代码,我使用的编译器是g++4.4 现在,我想继续致力于这个项目,努力改进它。我想使用一些C++11功能,由于Debian Wheezy附带了g++4.7,我想我会使用它 因此,我安装了MTL2,并尝试编译该项目。但我发现一个错误,因为不知道 error: expected type-specifier before ‘ptrdiff_t’ error: expected ‘>’ b

几年前,我不得不在职业生涯的最后一个项目中使用
MTL2
库(这是一项强制性要求)。我必须处理现有的(相当旧的)代码,我使用的编译器是
g++4.4

现在,我想继续致力于这个项目,努力改进它。我想使用一些
C++11
功能,由于
Debian Wheezy
附带了
g++4.7
,我想我会使用它

因此,我安装了
MTL2
,并尝试编译该项目。但我发现一个错误,因为不知道

error: expected type-specifier before ‘ptrdiff_t’
error: expected ‘>’ before ‘ptrdiff_t’
error: template argument 4 is invalid
我在谷歌上搜索了一下,发现自从
g++4.6
之后,标准标题中的一些内容发生了变化,我需要包含
cstdef
标题,以便使
ptrdiff\u t
成为大家熟知的(a)

因此,我将该标题包含到使用了ptrdiff_t的
mtl2
文件中,并重新编译了该项目。然而,出现了一个新的错误:

In file included from /usr/local/include/mtl/matrix.h:41:0,
             from /usr/local/include/mtl/mtl2lapack.h:20,
             from MCl_Eigen.cpp:36:
/usr/local/include/mtl/envelope2D.h:72:20: error: declaration of ‘typedef struct mtl::twod_tag mtl::envelope2D<T>::dimension’ [-fpermissive]
In file included from /usr/local/include/mtl/matrix_implementation.h:25:0,
             from /usr/local/include/mtl/matrix.h:33,
             from /usr/local/include/mtl/mtl2lapack.h:20,
             from MCl_Eigen.cpp:36:
/usr/local/include/mtl/dimension.h:19:7: error: changes meaning of ‘dimension’ from ‘class mtl::dimension<typename mtl::dense1D<T>::size_type>’ [-fpermissive]
make: *** [MCl_Eigen.o] Error 1
包含在/usr/local/include/mtl/matrix.h:41:0中的文件中,
从/usr/local/include/mtl/mtl2lapack.h:20,
根据MCl_特征值cpp:36:
/usr/local/include/mtl/envelope2D.h:72:20:错误:声明'typedef struct mtl::two d_tag mtl::envelope2D::dimension'[-fppermissive]
在/usr/local/include/mtl/matrix_implementation.h:25:0中包含的文件中,
来自/usr/local/include/mtl/matrix.h:33,
从/usr/local/include/mtl/mtl2lapack.h:20,
根据MCl_特征值cpp:36:
/usr/local/include/mtl/dimension.h:19:7:错误:将“dimension”的含义从“class mtl::dimension”[-fppermissive]更改为“dimension”
make:**[MCl_Eigen.o]错误1
我的问题是,是否有一种方法可以在
g++4.7
编译器中使用
mtl2
,还是使用更新的版本并使代码适应它更好?(或者使用与以前相同的编译器,
g++4.4


(a)我将
cstdef
头直接包含在
MTL
文件中。我是否应该在项目文件中执行此操作?

该版本的Debian附带GCC4.6。也许先试试。嗨!我一定要试试。但是如果可能的话,我想使用最新版本来获得
C++11
中的大部分资源。无论如何,我将尝试使用
g++4.6
@Tshepang我用
g++4.6
尝试过,但什么都没有。同样的错误。不过,使用
g++4.4
进行得很顺利。有没有办法将
C++11
的新功能与旧的
MTL
版本一起使用?使用
mtl4
有点困难,因为我必须迭代项目的源代码并修改它以匹配新版本。例如,
mtl2
中的标题在新版本中找不到。我担心这是一个容易的问题。我对MTL不熟悉。我建议你在这个问题上悬赏。要么这样,要么继续问下去。这是世上最活跃的房间。好的!!谢谢我会在聊天室里问的!