Я пытаюсь назначить блок разреженной матрицы и не могу заставить его работать. Кажется, функция, используемая eigen, устарела, и я мог бы исправить это с некоторыми определениями. Тем не менее, я уверен, ДОЛЖЕН ли я добавлять эти определения в проект или ждать новой версии Eigen. Не могли бы вы, ребята, посоветовать побочные эффекты определений.
Программа, которую я написал, выглядит так
#include <Eigen/Sparse>
int main()
{
Eigen::SparseMatrix<double> m(4, 4);
m.block(0, 0, 2, 2) << 1, 2, 3, 4;
}
и это предупреждение:
1> d: \ eigen_3.3.4 \ eigen \ src \ core \ functors \ stlfunctors.h (87): ошибка C4996: 'std :: unary_negate <_Fn>': предупреждение STL4008: std :: not1 (), std :: not2 (), std :: unary_negate и std :: binary_negate устарели в C ++ 17. Их заменяет std :: not_fn (). Вы можете определить _SILENCE_CXX17_NEGATORS_DEPRECATION_WARNING или _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS, чтобы подтвердить, что вы получили это предупреждение.
1> d: \ eigen_3.3.4 \ eigen \ src \ core \ functors \ stlfunctors.h (91): ошибка C4996: 'std :: binary_negate <_Fn>': предупреждение STL4008: std :: not1 (), std :: not2 (), std :: unary_negate и std :: binary_negate устарели в C ++ 17. Их заменяет std :: not_fn (). Вы можете определить _SILENCE_CXX17_NEGATORS_DEPRECATION_WARNING или _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS, чтобы подтвердить, что вы получили это предупреждение.
1> d: \ sandbox \ sandbox.cpp (25): ошибка C2678: двоичный файл «<<»: не найден оператор, который принимает левый операнд типа «Eigen :: Block» (или нет приемлемого преобразования)
1> с
1> [
1> Производная = Eigen :: SparseMatrix
1>
Заранее спасибо!