我試圖編譯的Visual Studio 2008在下面的代碼PICE:的boost ::容器和錯誤: 「C2679:二進制 '=':沒有操作員發現」
struct test
{
boost::container::vector<int> v1;
};
test v1, v3;
const test & v2 = v3;
v1 = v2;
我的錯誤得到的是:
錯誤C2679:二進制「=」:沒有操作員發現它採用類型「const的測試」的右邊的操作數(或沒有可接受的轉化率)
可以是「測試&測試::運算= (test &)' while試圖匹配參數列表'(test,const test)'
當使用正常的std :: vector而不是boost :: container等價物時,代碼編譯。我正在尋找爲什麼這個代碼不能編譯以及如何編譯的答案。
FWIW,下面的代碼編譯MSVC10下的:#include <升壓/容器/ vector.hpp> 結構測試 { 升壓::容器::矢量 V1; }; () \t test v1,v3; \t const test&v2 = v3; \t v1 = v2; } –
另一個FWIW:使用'-std = gnu ++ 03'的GCC 4.7.2以類似於VC++ 2008的方式失敗。它使用'-std = gnu ++ 11'編譯得很好,但是再次,整個點(boost :: container :: vector正在使用這個引起的問題)的提升移動庫的目的是爲C++ 03實現提供移動語義,因此使用a語言編譯時沒有任何問題也不足爲奇。編譯器/編譯器模式支持C++ 11移動語義。看起來好像可能存在一個處理可複製const對象的boost處理中的錯誤。 –