我面临一个问题
Eigen::Vector2f
如果根据其他操作进行初始化并使用进行编译,则未正确初始化
-O2
旗帜
main.cpp
#include <Eigen/Core>
#include <iostream>
int main(int argc, char** argv) {
const auto x = Eigen::Vector2f(1.0, 2.0);
const auto delta = Eigen::Vector2f(0.1, 0.2);
const auto add_1 = x + delta;
const auto add_2 = Eigen::Vector2f(x.x(), x.y()) + delta;
std::cout << "x: " << x.x() << ", " << x.y() << std::endl;
std::cout << "delta: " << delta.x() << ", " << delta.y() << std::endl;
std::cout << "add_1: " << add_1.x() << ", " << add_1.y() << std::endl;
std::cout << "add_2: " << add_2.x() << ", " << add_2.y() << " <-- " << std::endl;
return 0;
}
对于
add_2
,
Eigen::Vector2f(x.x(), x.y())
初始化为
(1.0, 2.0)
编译时未进行优化,但不使用
-氧气
旗帜
w/o优化
> g++ $(pkg-config --cflags eigen3) main.cpp; ./a.out
x: 1, 2
delta: 0.1, 0.2
add_1: 1.1, 2.2
add_2: 1.1, 2.2 <--
带有O2
g++ $(pkg-config --cflags eigen3) -O2 main.cpp; ./a.out
x: 1, 2
delta: 0.1, 0.2
add_1: 1.1, 2.2
add_2: 9.97967e+33, 0.2 <--
初始化为
Eigen::Vector2f(x.x(), x.y()) + delta
没有得到官方支持?
我在ubuntu 20.04和Eigen 3.3上使用g++9.4.0。
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
libeigen3-dev/focal,focal,now 3.3.7-2 all [installed,automatic]