Результаты поиска по запросу "rvalue-reference"

3 ответа

Могу ли я использовать ссылку rvalue для временной? Это неопределенное поведение или нет?

1 ответ

C ++ 11: Почему разрешено присваивать значения?

Из того, что я понимаю, причина, по которой опасно возвращать ссылки на rvalues из функций, обусловлена следующим кодом: T&& f(T&& x) { do_something_to_T(x); return static_cast<T&&>(x); } T f(const T& x) { T x2 = x; do_something_to_T(x2); return ...

0 ответов

 память или ограниченный ресурс, такой как дескриптор файла. Но необходимость передать их обратно пахнет скорее «плохим дизайном», чем «полезным ограничением».

рограммировании на C ++ 03 мы не можем передать безымянный временныйT() к функцииvoid foo(T&);, Обычное решение - дать временному имя, а затем передать его следующим образом: T v; foo(v);Теперь идет C ++ 0x - и теперь со ссылками на rvalue ...

ТОП публикаций

5 ответов

Все 3 варианта удовлетворяют 1, поскольку default + copy, default + move эквивалентны значению по умолчанию. Все 3 варианта удовлетворяют 3. Все 3 варианта удовлетворяют 2: они работают для типов DefaultConstructible. Определенный алгоритм может использоваться для Подвижных типов. В STL принято использовать разные версии алгоритмов для типов с разными возможностями.

у приложение для Linux и Windows, и заметил, что сборка GCC производит много бесполезных вызовов конструктора копирования. Вот пример кода, чтобы произвести это поведение: struct A { A() { std::cout << "default" << std::endl; } A(A&& rvalue) ...

3 ответа

Может ли компилятор автоматически генерировать std :: move для последнего использования lvalue?

7 ответов

Является ли конструкция «передача по значению и перемещению» плохой идиомой?

Так как у нас есть семантика перемещения в C ++, в настоящее время это обычно делается void set_a(A a) { _a = std::move(a); }Причина в том, что еслиa является значением, копия будет удалена, и будет только один ход. Но что произойдет, еслиa ...

4 ответа

Какой вариант использования для перегрузки функций-членов в ссылочных квалификаторах?

C ++ 11 позволяет перегружать функции-члены на основе ссылочных квалификаторов: class Foo { public: void f() &; // for when *this is an lvalue void f() &&; // for when *this is an rvalue }; Foo obj; obj.f(); // calls lvalue ...

2 ответа

Связывает ли const && со всеми значениями (и значениями)?

2 ответа

Синтаксис для универсальных ссылок

Это ссылка на значение: void foo(int&& a);Это не связывает с lvalues: int i = 42; foo(i); // errorЭто универсальная ссылка: template<typename T> void bar(T&& b);Он связывается с rvalues, а также с lvalues: bar(i); // okayЭто ссылка на ...

5 ответов

Передача по ссылке, константной ссылке, rvalue-ссылке или постоянной rvalue-ссылке?

Я учился прохождению по ссылке, и вот тест, который я сделал: #include <iostream> using namespace std; int i = 0; //If this is uncommented, compiler gives ambiguous definition error. //void paramCheck (string s) { // cout << ++i << ". Param is ...