move-semantics

    16熱度

    1回答

    請看下面的例子: #include <sstream> template <typename T> inline std::string to_string(T const & op) { std::ostringstream result; result << op; return result.str(); } 如果我是返回,而不是result.str

    4熱度

    1回答

    要了解編譯器如何選擇一類的構造函數的方式,我寫的代碼如下: #include <iostream> struct Widget { Widget(Widget&& w){std::cout << "Move ctor" << std::endl;} Widget(void){std::cout << "Default ctor" << std::endl;} W

    2熱度

    1回答

    考慮下面的代碼,它試圖移動構造一個shared_ptr,但是由於一個錯誤出現複製構造它: #include <utility> #include <cassert> #include <memory> int main() { const auto x=std::make_shared<int>(4325); // can't be moved from const

    0熱度

    1回答

    下面的代碼不會鏗鏘-700.1.81編譯和它的標準庫: ......./include/c++/v1/memory:2626:46: note: in instantiation of member function 'std::__1::unique_ptr.....requested here _LIBCPP_INLINE_VISIBILITY ~unique_ptr() {reset();

    1熱度

    3回答

    「理論」問題,如果你願意。 爲了在類中執行/使用移動構造函數,我總是必須使用std::move(...)來告訴編譯器,我希望「移動」一個對象而不是複製它嗎? 是否有任何情況下編譯器會調用移動構造函數而不使用std::move? (我的猜測是在函數返回值?)

    1熱度

    1回答

    如何解釋移動構造函數或移動賦值運算符的參數? 語法是typename && name。 (例如; myclass && inst) 這是「引用參考」,即;像編譯後指針指針一樣工作?或者應該認爲這是一個全新的類型,「不同類型的參考」,即;像編譯後的單個指針一樣工作? 我希望這是一個明確的問題。

    4熱度

    2回答

    是否有可能得到一個集合的值,並適用於它的一種方法,其只接受self而不是&self? 最小工作實例 我想什麼寫的是一個類似於: use std::collections::HashMap; fn get<B>(key: i32, h: HashMap<i32, Vec<(i32, B)>>) -> i32 where B: Into<i32> { let v: &Vec<(i32,

    3熱度

    3回答

    如果對象的類已禁用了複製構造函數並禁用了複製操作符,是否可以在地圖中插入對象?移動語義在這裏有用嗎? #include <map> class T { public: T(int v): x(v) {}; private: T(const T &other); // disabled! T &operator=(const T &other); // disa

    -1熱度

    1回答

    下面是插入排序的模板化版本,它會導致編譯錯誤,無需任何額外空間就可以執行插入排序。 #include <vector> #include <iostream> #include <algorithm> #include <iterator> using namespace std; template <typename T> insertSort(T start, T end)

    5熱度

    1回答

    我正在從野牛的語義值構建我的分析數據結構。一種特殊的結構是std::vector<double>。我很好奇,野牛內部人員如何處理移動的語義值。我試着分析C++ M4文件,結果發現: template <typename Base> inline void ]b4_parser_class_name[::basic_symbol<Base>::move (basic_s