2016-03-06 189 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