Я компилирую Eigen 3.3.4 под компилятором MIPS C ++ Multi-2000 (Green Hill).
После того, как я решил проблему макроса выравнивания в Macros.h, я снова столкнулся с проблемой для некоторого выражения шаблона.
Найдите подробности ошибки, как показано ниже. Я знаю, что это должно быть проблемой для моего старого компилятора C ++, но любой, кто может предложить обходной путь, будет с благодарностью.
"C:\Eigen/Eigen/src/Core/util/Meta.h", line 389
: error:
expression must have pointer-to-class type
template <typename C> static meta_yes testFunctor(C const *,typename enable_if<(sizeof(return_ptr<C>()->operator()())>0)>::type * =
0);
^
"C:\Eigen/Eigen/src/Core/util/Meta.h", line 389
: error:
incomplete type is not allowed
template <typename C> static meta_yes testFunctor(C const *,typename enable_if<(sizeof(return_ptr<C>()->operator()())>0)>::type * =
0);
^
Таким образом, проблема должна быть внутри выражения, как показано ниже. Но я действительно не могу понять это.
template <typename C> static meta_yes testFunctor(C const *,typename enable_if<(sizeof(return_ptr<C>()->operator()())>0)>::type * = 0);
Обновление 8/25-> Может ли «typename enable_if» вызвать это?
Задача ещё не решена.
Других решений пока нет …