我在C++中使用特征库,并遇到一个奇怪的问题。明确的类型声明Vs自动在特征表达式在C + +
Eigen::VectorXd someV(){
Eigen::VectorXd a(3);
a(1)=1.2;
a(2)=2.3;
a(0)=3.2;
return a;
}
int main(){
auto c=2.*someV();
std::cout<<c;
return 0;
}
不返回任何东西。但是,
int main(){
auto c=someV();
c *= 2.;
std::cout<<c;
return 0;
}
返回所需的结果。还要注意显式类型声明解决了这个问题。
int main(){
Eigen::VectorXd c=2.*someV();
std::cout<<c;
return 0;
}
为什么在第一种情况下使用auto不正确?
我会怀疑这与casts和'auto'的交互有关。你可以尝试不使用'auto',但要明确返回类型,看看行为是否有所不同? – TriskalJM
你得到了什么样的价值观,你期望什么样的价值? – comingstorm
请包括SSCCE(http://sscce.org/),以便我们不必猜测输入是什么,结果与预期结果不同等。 – NPE