Вопросы по теме 'rvalue-reference'

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

Имеет ли смысл использовать идиому перемещения и замены для подвижного и некопируемого класса?
Если у меня есть класс, например 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&...
2001 просмотров

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

вычет эталонного шаблона 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
У меня есть числовой класс шаблона вектора ниже (вектор для числовых расчетов). Я пытаюсь сделать возможным написать D=A+B+C , где все переменные являются Vector объектами. A , B и C изменять не следует. Моя идея состоит в том, чтобы...
3443 просмотров

Ссылки на Rvalue и дизайн классов
Я пытался оценить, как ссылки rvalue влияют на дизайн класса. Скажем, у меня есть существующий класс, как показано ниже. class X { string internal; public: void set_data(const char* s) { internal = s; } .. .. .. //other stuff...
181 просмотров
schedule 24.04.2024

Вперед или двигаться
Являются ли они допустимым использованием перемещения и вперед? Являются ли f3 и f4 одинаковыми? Опасно ли это делать? Спасибо! #include <utility> class A {}; A f1() { A a; return a; // Move constructor is called } A...
174 просмотров

Считается ли безопасным получение адреса ссылки rvalue перед перемещением?
Я играю с семантикой перемещения и ссылками [r|l]value, чтобы научиться использовать их в реальных программах. Рассмотрим следующий код: // Item is a heavy class having move ctor and assignment but no copy. std::map<std::string, Item*>...
1164 просмотров

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

Справочник по Rvalue
Это неопределенное поведение? Если нет, то каково поведение? // 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

Компилятор не ругается, когда 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...
122 просмотров
schedule 28.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

Шаблонная функция С++ 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

Есть ли варианты использования std::forward с prvalue?
Наиболее распространенное использование std::forward - это, ну, в общем, совершенная пересылка пересылаемой (универсальной) ссылки, например template<typename T> void f(T&& param) { g(std::forward<T>(param)); // perfect...
969 просмотров

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

Имеет смысл объявлять методы RValue (например, void operation() &&;) виртуальными C++1x
Это может быть несколько экзотично: (я работаю над обновлением нового стандарта С++). Есть ли смысл объявить метод RValue в классе, например. void operation() &&; virtual ? Я не могу представить, потому что операция применима только к...
253 просмотров
schedule 28.10.2022

Разрешают ли ссылки const rvalue дополнительную оптимизацию для компилятора?
Модификатор const для параметра функции в C++ означает, что эта функция не может изменить значение параметра, но не гарантирует, что оно не может быть изменено кем-то другим во время выполнения функции. Таким образом, компилятор не может выполнять...
395 просмотров

Как получить разные перегрузки для ссылок rvalue и lvalue с типом, выведенным из шаблона?
У меня есть функция foo , принимающая параметр по ссылке, и я хочу, чтобы она по-разному действовала на ссылки rvalue и lvalue. (Я также должен упомянуть, что foo() уважает константу; это не меняет значение, на которое ссылаются.) Я знаю, что если...
700 просмотров

Rvalue и перенаправление ссылок на массивы в стиле C
Играя с rvalue и пересылая ссылки на массивы в стиле C, я наткнулся на странное поведение. Сначала я подумал, что это связано с моим непониманием того, как массивы в стиле C связываются со ссылками && , но теперь, после прочтения этого...
105 просмотров

Путаница между ссылкой на rvalue и rvalue в книге
(Я искал книгу [c++] "Функциональное программирование на C++" , и дал только 4 нерелевантных результата.) Я читаю Функциональное программирование на C++ от Ивана Чукича , и на странице 118 есть предложение, которое я не уверен, что понял....
79 просмотров