我有一个Visual Studio社区2015项目(x64解决方案平台)使用Armadillo线性代数库(版本6.500.5稳定),如果我尝试接收构建错误使用C++ 11中的语法。该文档指出“使用C++ 11标准时,Mat,Col,Row中的元素可通过初始化列表”设置。例如,如果我从犰狳文档describing element initialization,取例如右windows visual studio 2015,c + + 11标准和犰狳库
// C++11
mat A = { {1, 3, 5},
{2, 4, 6} };
VS2015生成错误,
Error C2440 'initializing': cannot convert from 'initializer list' to 'arma::Mat<double>'
与此相反,C++ 98例如编译没有错误:
// C++98
mat A;
A << 1 << 3 << 5 << endr
<< 2 << 4 << 6 << endr;
这当然会让我怀疑C++ 11的兼容性是无效的,但无数的Visual Studio项目属性中我找不到任何有关这样的o以及其他网络搜索的结果似乎表明C++ 11兼容性是,它们是2012年以后版本的Visual Studio中提供的。使用Armadillo没有其他问题,并且在Linux下测试C++ 11代码(gcc 4.9.3)确实工作正常。有没有人对此有任何洞察,或者知道VS2015是否有一些隐藏的C++ 11开关?
解决了! ...感谢您的快速响应。欢呼声// Rolf – Rolf