Свързани въпроси 'rvalue-reference'

Напред или Преместване
Това валидна употреба ли е на движение и напред? Еднакви ли са f3 и f4? Опасно ли е да го правите? Благодаря ви! #include <utility> class A {}; A f1() { A a; return a; // Move constructor is called } A f2(A&& a) {...
174 изгледи

C++11 шаблонна функция с извикване на параметър rvalue
В някакъв клас O имам шаблонна функция test2 : struct A{int value;}; struct O{ A value; template<typename Args> static void test2(Args &&args){ std::cout << std::endl << "!!!" <<...
224 изгледи
schedule 25.09.2022

Има ли смисъл да се използва идиома за преместване и размяна на преместваем и некопируем клас
Ако имам клас като class Foo{ public: Foo(){...} Foo(Foo && rhs){...} operator=(Foo rhs){ swap(*this, rhs);} void swap(Foo &rhs); private: Foo(const Foo&); // snip: swap code }; void swap(Foo& lhs, Foo&...
2001 изгледи

Защо не се извиква конструкторът за преместване?
Аз съм нов в C++ и се опитвам да разбера препратките към rvalue и семантиката на преместване. Написах прост клас, Class, който включва метод, fun, който създава екземпляр на класа в своето тяло и го връща. Класът има конструктор за копиране,...
43 изгледи
schedule 04.10.2022

Разбиране на Rvalue Reference
Това недефинирано поведение ли е? Ако не, какво е поведението? // In some external library with, say, header "a.h" void f(int &&x) { x = 5; // Which memory does this assignment apply to? } #include "a.h" int main() { f(7); // At...
81 изгледи
schedule 10.10.2022

Предаване на Lvalue към параметър на RValue
Исках да знам как е възможно това? template<typename T> void Test(T&& arg) { arg = 14; } int a = 23; Test(a); Въпросът ми е, че функцията Test изисква аргумент от тип Rvalue, но изглежда, че приема и параметър от тип...
252 изгледи
schedule 10.10.2022

Може ли някой да обясни препратките към rvalue по отношение на изключенията?
Да кажем, че имам този клас изключения: struct MyException : public std::exception { MyException(const std::exception &exc) : std::exception(exc) { cout << "lval\n"; } MyException(std::exception &&exc) :...
1310 изгледи

Перфектно препращане на член на обект
Да предположим, че имам две struct s: struct X {}; struct Y { X x; } Имам функции: void f(X&); void f(X&&); Как да напиша функция g() , която приема Y& или Y&& , но перфектно препраща съответно X&...
1228 изгледи

Счита ли се за безопасно получаването на адрес на препратка към rvalue преди преместване?
Играя си около Move Semantics и [r|l]value references, за да науча как да ги използвам в програми от реалния свят. Помислете за следния код: // Item is a heavy class having move ctor and assignment but no copy. std::map<std::string, Item*>...
1164 изгледи

Компилаторът не се оплаква, когато vector‹char›&& е обвързан с vector‹char›&
Използвам Visual Studio 2013 Express. class B{ public: vector<char>& a; int& b; B(vector<char>& i,int& c) :a(i),b(c) {} }; int main(){ int l=3; vector<char> h; shared_ptr<B> bb (new...
122 изгледи
schedule 28.10.2022

Има ли случаи на употреба за std::forward с prvalue?
Най-честата употреба на std::forward е да, добре, усъвършенствате препращане на препращаща (универсална) препратка, като template<typename T> void f(T&& param) { g(std::forward<T>(param)); // perfect forward to g }...
969 изгледи

Претоварване на цифров векторен оператор + референтен параметър rvalue
Имам класа шаблон за числови вектори по-долу (вектор за числени изчисления). Опитвам се да направя възможно писането на D=A+B+C , където всички променливи са Vector обекти. A , B и C не трябва да се променят. Идеята ми е да използвам...
3443 изгледи

init-capture за препратка към rvalue във Visual Studio 2013
Искам да използвам .net System.Threading.Tasks.Task.ContinueWith в C++, така че пиша следната функция.. #include <iostream> #include <functional> #include <future> template <typename Func, typename Ret> auto...
979 изгледи
schedule 30.01.2024

Връщане на rvalue - какво не е наред с този код?
Попаднах на следния кодов фрагмент std::string&& test() { std::string m="Hello"; return (std::move(m)); } int main() { std::string&& m = test(); } Разбирам, че горният код е неправилен и опасен, но не знам защо....
186 изгледи

приспадане на референтния шаблон на rvalue
template<class U> void f( U && v) { std::cout << typeid(v).name() << "\n"; //'int' in both cases if( boost::is_same<int&&,U>::value ) { std::cout << "reach here\n"; //only with...
565 изгледи
schedule 12.04.2024

Rvalue препратки и клас дизайн
Опитвах се да оценя как препратките към rvalue влияят на дизайна на класа. Да кажем, че имам съществуващ клас, както е показано по-долу class X { string internal; public: void set_data(const char* s) { internal = s; } .. .. .....
181 изгледи
schedule 24.04.2024