move-semantics

    1熱度

    1回答

    我想在C++中實現一種類似「數字」的數學對象(比如說一個組或一個環中的元素)。我確信我並不是唯一一個處理這個問題的人,所以可能會有大量關於算術運算符重載的「最佳」方式的討論。但是,我找不到滿意的答案(儘管也許我懶得搜索更多)。 比方說,我想重載運算符「+」一類A. 的問題是,有太多不同的重載我能想到的: 運營商+(const的一個& X,常量甲& Y) 操作者+(常量甲& X,A & & Y) 操

    2熱度

    2回答

    時,我有以下代碼(http://coliru.stacked-crooked.com/a/a0e5ff6ee73634ee): #include <iostream class A { public: explicit A(int a) {std::cout << "Main constructor" << std::endl;} A(const A& a)

    3熱度

    1回答

    I類有2類: template<typename T> class base{ T t; public: base(base &&b): t(std::move(b.t)){} }; template<typename T, typename T2> class derived : protected base<T>{ T2 t2; public:

    4熱度

    1回答

    我是否理解C++ 14標準庫使用移動語義?換句話說,我可以確信我在下面的程序中使用移動而不是副本: #include <iostream> #include <string> #include <vector> using namespace std::string_literals; std::vector<std::string> greeting() { std::v

    4熱度

    2回答

    根據http://www.boost.org/doc/libs/1_61_0/doc/html/boost_asio/reference/Handler.html,提供給io_service::post的處理程序必須是可複製構造的。 然而,這不包括在其中一個socket時的情景,並響應處理器的移動,保證我只有一個作業處理程序: auto socket = std::make_unique<sock

    2熱度

    2回答

    我想知道當我不在移動構造函數/移動任務中時,是否有必要顯式移動值。比方說,我有以下情況: struct Node { std::vector<int> items; }; Node create() { std::vector<int> items; items.push_back(2); Node n; // should I use

    2熱度

    1回答

    如何在給定內部字段數據,大小和容量的情況下實現std :: vector的移動原理圖? 如何讓這個線程安全? #include <utility> class vec { public: vec(vec&& o) : size(o.size), capacity(o.capacity), data(std::move(o.data)) {} vec& oper

    2熱度

    1回答

    我想爲一個接口類寫一個adapter類,該接口類應該是堆棧分配的接口實現(所以不需要新的/刪除處理外部,適配器本身可以使用新的/刪除)以及b)將由該接口的各個實現調用的lambda函數。 #include <iostream> #include <functional> struct interface { virtual int hello() = 0; }; struct

    1熱度

    1回答

    我在看下面的例子就移動構造函數/賦值: https://msdn.microsoft.com/en-us/library/dd293665.aspx 我已經加入了交換功能,以簡化移動構造函數/分配和修改了一些拷貝賦值: #include <iostream> #include <vector> #include <algorithm> using namespace std; clas

    2熱度

    2回答

    讓我們來辦理手續。 28年3月17日有效,但非指定狀態[defns.valid] ,並非只是對象的 不變量表現爲指定 其類型滿足和操作在對象上被指定的對象狀態 [示例:如果對象std::vector<int>類型的x處於有效但非指定狀態 ,x.empty()可以稱爲 無條件,和0123只有在x.empty()返回 false時纔可以調用。 - 端示例] 某些用戶已經建議std::move(x).s