move-semantics

    1熱度

    1回答

    我有一個實現移動構造函數的類Bar。 對於一個示例Bar b,如果我使用fooRvalRef(std::move(b))調用void fooRvalRef(Bar&&),則不會調用Bar的移動構造函數。 另一方面,對於函數void foo(Bar),使用foo(std::move(b))調用它將調用Bar的移動構造函數。 這是爲什麼?

    0熱度

    2回答

    我正在製作一個小行星的版本,並且我正在嘗試創建一個系統,您可以將特定數量的像素傳送到您面對的任何方向。每次我嘗試時,圖像都會傳送到地圖上的相同位置。我放棄了這個想法並繼續前進,但我想起了這個網站,並決定如果有人知道,那會是你們。 我開始用這個概念: //也許跳到位置// x = xstart; y = ystart; 由於需要的位置是動態的,但我想嘗試實施這一概念: laser = inst

    4熱度

    1回答

    我在這裏講述了一個長期的背景故事,因爲除了直接的答案之外,我想知道我的推理是否導致這種情況是正確的。 我有一個函數採取dynamic_bitset<>參數(從Boost.dynamic_bitset)。 說它看起來像這樣。 void foo(boost::dynamic_bitset<> db) { // do stuff } 恰巧,它只會被調用與臨時工,從構造建成,爲foo(bo

    2熱度

    3回答

    形勢 我設計,支持移動語義類模板logic類模板移動語義。 logic具有模板參數Visitor,並且類型爲Visitor&的參考成員。這是一個庫代碼。 用戶繼承類模板logic並傳遞一個自定義訪問者,如my_visitor。自定義訪問者可能包含可移動成員。例如,my_visitor具有構件v這類型是std::vector。 問題 見test2()。當我移動my_logic時,my_visitor

    3熱度

    1回答

    我試圖合併兩個向量unique_ptr(即std::move他們從一個到另一個),我一直遇到一個「使用已刪除的函數...」 「錯誤文字牆。根據錯誤,我顯然試圖使用unique_ptr的刪除拷貝構造函數,但我不知道爲什麼。以下是代碼: #include <vector> #include <memory> #include <algorithm> #include <iterator> s

    2熱度

    1回答

    我試圖創建一個非常簡單的基本C++類來實現線程安全列表,即當您訪問它時會自動鎖定的列表。不幸的是,編譯器不想讓我創建並返回一個包含unique_lock的結構。這是我最初試圖: template<typename T> struct LockedQueue { private: std::mutex mutex; using lock_t = std::uniq

    1熱度

    1回答

    我不知道爲什麼編譯器會給我關於模板實例化的警告。 那是一個代碼段它運行得很好並正確輸出左值/右值: //template<typename T> void overloaded(const /*T*/std::string& in) { std::cout << "lvalue" << std::endl; } //template<typename T> void over

    4熱度

    1回答

    下面的代碼無法編譯GCC 6.1,但在Clang 3.8.0和Visual Studio 2015工作: #include <memory> class base { public: base(std::unique_ptr<int>) {} }; class derived : public base { public: using base::base; }

    2熱度

    1回答

    我在Rust中包裝了一個C庫,並且它的許多函數都是通過指向結構體的指針來引用參數的,這些結構體通常指向其他結構體。爲了減少開銷,我希望能夠緩存將Rust數據封送到C結構中的結果。 這裏的C庫會如何期待一些參數的例子: #[repr(C)] struct Foo { x: i32, y: f32 } #[repr(C)] struct Bar { p_foo:

    8熱度

    1回答

    Rust的示例網站上提供了Rust的移動語義示例:Rust Move Semantics。 我對這兩種情況都有基本的瞭解。首先是一個原語如何可以有一個新的別名,原始仍然可以使用,因爲最終的結果是一個複製看到i32利用Copy特質。這對我來說很有意義。 此外,出於許多充分的理由,第二個示例在堆中具有多個引用i32的別名方面是有意義的。 Rust實施所有權規則,因此在創建新綁定後,原始別名不能使用。這