rvalue

    5熱度

    3回答

    在以下代碼: int foo(const int& f) //version 1 { int g = f; return int(foo(g)); // calls itself, turning into SO } int& foo(int& f) //version 2 { f *= -1; return f; } int main()

    21熱度

    2回答

    有沒有辦法在C++中編寫一個接受左值和右值參數的函數,而不必將其作爲模板? 例如,假設我編寫了一個函數print_stream,該函數從istream中讀取並打印讀取到屏幕上的數據或其他內容。 我認爲這是合理的調用print_stream這樣的: fstream file{"filename"}; print_stream(file); 以及像這樣: print_stream(fstream

    4熱度

    1回答

    我理解C++ 11中的轉發方法。 template <class T> void foo(T &&) foo現在將接受左值和右值。 我的問題是當我超載富進一步。 考慮這個簡單的代碼:如果我叫foo與A <int> &(左值)對象 template <class T> class A {}; template <class T> void foo(T &&obj) {} template

    1熱度

    1回答

    例如, struct A {}; struct B { B(A&& a) : mA(std::move(a)) // Is A's constructor called here? {} A&& mA; }; 是A的構造函數調用的B初始化列表?或者它就像一個由指針實現的引用?

    0熱度

    1回答

    對於下面的代碼,我想使用std :: move來提高效率。我有兩個函數,第一個函數使用std :: move,第二個函數只是調用第一個函數。那麼,我需要在函數「vector convertToString()」中再次使用std :: move嗎?爲什麼?爲什麼不?謝謝。 class Entity_PortBreakMeasure { public: Entity_PortBreakMeasu

    -1熱度

    1回答

    我真的很困惑他們在C++中的存在。問題在於它們部分實現了(至少在VC++ 2013中)。與錯誤代碼 int pArray[] = new int[2]; ::例如,你不能的存儲器中的動態地分配的數組分配給數組對象 cmd_c++_test___.cpp(88): error C2440: 'initializing' : cannot convert from 'int *' to 'int

    1熱度

    1回答

    根據http://en.cppreference.com/w/cpp/language/move_constructor; 「A類可以有多個移動構造,例如既T::T(const T&&)和T::T(T&&)」 當將一個想通過恆定的右值到移動構造函數?

    2熱度

    2回答

    考慮以下內容,其中有些內容是通過多層添加到載體: class A { public: void Add(Content c) { // Considerable amount of checking code here. v.push_back(c); } private: std::vector<Content> v; }; class

    4熱度

    1回答

    爲什麼這個代碼不能編譯?如果我用另一種類型的那不可複製它工作正常更換std::stringstream error: use of deleted function ‘std::basic_stringstream<char>::basic_stringstream(const std::basic_stringstream<char>&)’ f(std::stringstream{}

    5熱度

    2回答

    我有一個View和Shape類,其中View擁有它的Shape對象。 我正在實施這個作爲unique_ptr的矢量。 在函數View :: add_shape(std :: unique_ptr & & shape)中,我仍然需要在rvalue參數上使用std :: move來編譯它。爲什麼? (使用GCC 4.8) #include <memory> #include <vector> us