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

C++0x: условный оператор, xvalues ​​и decltype
Я повторно публикую comp.std.c++ Обсуждение Usenet здесь, потому что эта группа стала очень ненадежной. Последние несколько постов, которые я туда отправил, ушли в пустоту, и активность почти прекратилась. Сомневаюсь, что меня забанили и/или все...
626 просмотров
schedule 26.10.2022

Использование ссылочных элементов rvalue?
Мне было интересно, какое использование имеет ссылочный элемент rvalue class A { // ... // Is this one useful? Foo &&f; }; Есть ли у него какие-либо преимущества или недостатки по сравнению с элементом ссылки lvalue? Каков его...
6497 просмотров
schedule 08.12.2023

Контейнеры стандартных библиотек, создающие множество копий rvalue в GCC
Я пишу приложение как для Linux, так и для Windows и заметил, что сборка GCC производит много бесполезных вызовов конструктора копирования. Вот пример кода для создания такого поведения: struct A { A() { std::cout <<...
507 просмотров
schedule 19.04.2023

Visual C++ 2010, ошибка ссылки на rvalue?
Это ошибка в Visual C++ 2010 или правильное поведение? template<class T> T f(T const &r) { return r; } template<class T> T f(T &&r) { static_assert(false, "no way"); //< line # 10 return r; } int main() {...
809 просмотров

RValue, разрешение шаблона и конструкторы копирования (в Visual C++ 2010)
Я создаю простой контейнерный класс, но сталкиваюсь с некоторыми проблемами (повторная сборка в Visual C++ 2010, ошибка ссылки rvalue? ) #include <cassert> #include <utility> template<typename T0> class MyType { public:...
397 просмотров

Что такое ссылка rvalue на тип функции?
Недавно я сосредоточился на концепциях glvalues, xvalues ​​и prvalues ​​C++0x, а также на ссылках rvalue. Однако есть одна вещь, которая до сих пор ускользает от меня: Что такое "ссылка rvalue на тип функции" ? Он буквально неоднократно...
1241 просмотров
schedule 19.08.2023

Изменяемы ли буквальные числа или нет?
Естественно, это не скомпилируется: int &z = 3; // error: invalid initialization of non-const reference .... и это будет скомпилировано: const int &z = 3; // OK Теперь рассмотрим: const int y = 3; int && yrr = y;...
258 просмотров
schedule 30.10.2022

Передача результата std::forward_as_tuple() нескольким функциям, которые могут перемещаться из элементов rvalue-reference этого объекта?
Изменить: я думаю, что наиболее вероятным вариантом использования того, о чем я спрашиваю, является создание функции, которая получает кортеж rvalue-references от std::forward_as_tuple() . Причина, по которой этот вопрос пришел мне на ум,...
983 просмотров

Как заставить средство форматирования кода Eclipse CDT понимать ссылку на rvalue?
У меня есть довольно неприятная проблема с форматировщиком / парсером кода Eclipse CDT IDE, и я не могу найти на нее ответ. По какой-то причине синтаксический анализатор IDE не рассматривает ссылку на rvalue как часть нормального кода C++ и,...
520 просмотров

C++11: Почему разрешено присвоение rvalue?
Насколько я понимаю, причина, по которой опасно возвращать ссылки rvalues ​​из функций, связана со следующим кодом: T&& f(T&& x) { do_something_to_T(x); return static_cast<T&&>(x); } T f(const T& x) { T x2 = x;...
4243 просмотров
schedule 14.05.2022

Могу ли я обычно / всегда использовать std :: forward вместо std :: move?
Я смотрел Скотта Мейерса поговорим об универсальных справочниках с конференции C ++ and Beyond 2012, и пока все имеет смысл. Однако примерно через 50 минут один из зрителей задает вопрос, который меня тоже интересовал. Мейерс говорит, что его не...
7695 просмотров

Обходные пути для отсутствия ссылок rvalue на эту функцию
У меня есть класс контейнера прокси вокруг подвижного объекта, и я хочу, чтобы прокси мог неявно выдавать ссылку rvalue на базовый объект, но только тогда, когда сам прокси перемещается. Я считаю, что смогу реализовать это поведение согласно...
2867 просмотров

Передача значения r в качестве неконстантной ссылки (предупреждение VS C4239)
То, что я хочу сделать (используя лямбду С++), эффективно: std::vector<MyType> GetTheArray () {return something;} const auto DoSomething = [](std::vector<MyType> & array) { //Some processing that involves either sorting the...
3036 просмотров
schedule 08.02.2023

Должен ли я фиксировать возвращаемое значение по значению или по ссылке на r-значение?
Если у меня есть функция, которая возвращает некоторый объект, например std::vector<int> foo() { std::vector<int> v; v.push_back(1); return v; } тогда какая разница между словами std::vector<int> &&v...
144 просмотров

вспомогательная конструкция make_XYZ, разрешающая RVO и вывод типа, даже если XZY не имеет ограничения на копирование
ОБНОВЛЕНИЕ 1. В C ++ 17 добавлен вывод типов для конструкторов, что не означает, что бесплатная функция является второстепенным решением. ОБНОВЛЕНИЕ 2: C ++ 17 добавил гарантированное исключение копии (копирование даже не происходит...
754 просмотров

std:forward внутри класса шаблона
template<typename T> class BlockingQueue { std::queue<T> container_; template< typename U > void push(U&& value) { static_assert(std::is_same<T, typename...
682 просмотров
schedule 08.05.2024

Должен ли оператор присваивания следить за rvalueness присваиваемого объекта?
Для типов классов можно назначать временные объекты, что на самом деле не разрешено для встроенных типов. Кроме того, оператор присваивания, сгенерированный по умолчанию, даже дает lvalue: int() = int(); // illegal: "expression is not...
523 просмотров
schedule 27.02.2022

Увеличение времени жизни временного через rvalue data-member работает с агрегатом, но не с конструктором, почему?
Я нашел следующую схему для продления срока жизни временных работ, я не знаю, нужно ли, но это так. struct S { std::vector<int>&& vec; }; int main() { S s1{std::vector<int>(5)}; // construct with temporary...
1174 просмотров

Повторное использование кода для lvalue и rvalue
Предположим, у меня есть конструктор копирования. Этот конструктор вызывает иерархию функций, передавая скопированный объект в качестве ссылки lvalue. Теперь у меня также есть конструктор перемещения, который в основном может использовать ту же...
104 просмотров

Когда возврат ссылки rvalue приводит к неопределенному поведению?
В ответе на переполнение стека, здесь , Керрек публикует следующий код. Foo && g() { Foo y; // return y; // error: cannot bind ‘Foo’ lvalue to ‘Foo&&’ return std::move(y); // OK type-wise (but undefined...
287 просмотров