Построение ошибок с помощью Matrix Template Library 2 и g ++ 4.7

Несколько лет назад мне пришлось использовать MTL 2 библиотека в окончательном проекте моей карьеры (это было обязательным требованием). Мне пришлось работать над существующим (и довольно старым) кодом, и компилятор, который я использовал, был g++ 4.4,

Теперь я хочу продолжить работу над этим проектом, чтобы попытаться улучшить его. Я хочу использовать некоторые C++11 особенности и с Debian Wheezy приходит с g++ 4.7Я думаю, я буду использовать это.

Итак, я установил MTL 2 и попытался скомпилировать проект. Но я получил ошибку в отношении ptrdiff_t не было известно:

error: expected type-specifier before ‘ptrdiff_t’
error: expected ‘>’ before ‘ptrdiff_t’
error: template argument 4 is invalid

Google немного я обнаружил, что с g++ 4.6 некоторые вещи изменились в стандартных заголовках и что мне нужно было включить cstddef заголовок для того, чтобы сделать ptrdiff_t известен (А).

Так что я включил этот заголовок в MTL 2 файлы, которые использовали ptrdiff_t и перекомпилировал проект. Однако появилась новая ошибка:

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

У меня вопрос, есть ли способ использовать MTL 2 с g++ 4.7 компилятор или лучше использовать более новую версию и адаптировать к ней код? (или используйте тот же компилятор, что и раньше, g++ 4.4)

(А) Я включил cstddef Заголовок прямо в MTL файлы. Должен ли я сделать это в файлах проекта вместо этого?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]