2016-03-06 193 views
0

我有一个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开关?

回答

3

VS2015中的C++ 11支持不完整。你可以有力地告诉犰狳通过包括犰狳头部之前定义ARMA_USE_CXX11使用C++ 11周的特点:

#define ARMA_USE_CXX11 
#include <armadillo> 

(边注:gcc和铛是为更好的选择最新版本的C++ 11/C + +14;你可以从MinGW项目获得gcc for windows)。

+0

解决了! ...感谢您的快速响应。欢呼声// Rolf – Rolf