Описание тега rvalue-reference
Ссылка rvalue - это новая языковая функция в C++11, представляющая ссылку на rvalue. Вместе со сворачиванием ссылок они используются для реализации и включения семантики перемещения и идеальной пересылки.
1
ответ
Ссылочный параметр Rvalue истекает при передаче через std::forward?
У меня есть этот код, который пытается совершенную пересылку пакета параметров шаблона в std::function через промежуточный класс: #include <functional> #include <vector> #include <algorithm> #include <iterator> #include <m…
29 дек '14 в 10:41
0
ответов
push_back PR-значение в векторе
Внимательно читая ссылки, конструктор перемещения может быть вызван только Xvalue. Тогда как-то так... std::vector<Class> vec vec.push_back(Class(..args..)) возможно без перемещения (приведения) к Xvalue? Есть ли конкретный способ использовани…
22 окт '16 в 16:09
1
ответ
Что такое использование ссылочных переменных-членов rvalue
Мне было интересно, есть ли смысл иметь ссылочную переменную rvalue (не как параметр функции)? Я понимаю использование ссылки rvalue, когда она используется как переменная функции, так как тогда можно избежать ненужных распределений и т. Д. Но есть …
17 май '15 в 19:40
1
ответ
Как мне обеспечить вызов конструктора перемещения? (переместить семантику и ссылку на значение)
У меня есть этот кусок кода #include <iostream> #include <vector> using namespace std; class ArrayWrapper { private: int *_p_vals; int _size; public: //default constructor ArrayWrapper () : _p_vals( new int[ 64 ] ) , _size( 64 ) { cout &…
07 ноя '17 в 16:10
1
ответ
make_tuple с параметрами шаблона не компилируется
Рассмотрим этот код: #include <tuple> int main() { int i; long k; auto tup1 = std::make_tuple<long>(i); // Compiles auto tup2 = std::make_tuple<int>(k); // Compiles auto tup3 = std::make_tuple<int>(i); // Does not compile aut…
28 окт '16 в 09:19
2
ответа
Каково намерение конструктора forward-by-lvalue-reference, пока существует совершенный конструктор пересылки?
Давайте принимать std::pair<T1, T2> В качестве примера. Он имеет следующие два конструктора: constexpr pair( const T1& x, const T2& y ); // #1 template< class U1, class U2 > constexpr pair( U1&& x, U2&& y ); // #2…
04 янв '18 в 09:16
2
ответа
Инициализация массива-члена с некопируемым non pod
Я думаю, что самый простой способ задать вопрос - это пример. Предположим, у нас есть следующий тип: class Node { // make noncopyable Node(const Node& ref) = delete; Node& operator=(const Node& ref) = delete; // but moveable Node(Node&am…
10 авг '13 в 11:44
1
ответ
"Нет жизнеспособного перегруженного =" nullptr
Я только начал с C++ и застрял в конструкторе перемещения. Вот мой .cpp: SimpleMatrix::SimpleMatrix(SimpleMatrix &&other_mat) { cols = other_mat.cols; rows = other_mat.rows; data_ = other_mat.data_; other_mat.cols = 0; other_mat.rows = 0; ot…
28 дек '18 в 19:59
3
ответа
Синтаксис для универсальных ссылок
Это ссылка на значение: void foo(int&& a); Это не связывает с lvalues: int i = 42; foo(i); // error Это универсальная ссылка: template<typename T> void bar(T&& b); Он связывается с rvalues, а также с lvalues: bar(i); // okay Эт…
13 янв '13 в 11:07
1
ответ
Свертывание ссылок для локальных переменных
В шаблоне функции, параметризованном на Tтип T&& может быть или не быть ссылкой на rvalue, в зависимости от категории значения аргумента: template <typename T> void function(T&& x) { // ... } std::string some_named_string; func…
11 авг '11 в 09:39
0
ответов
Подпись аргумента перемещения C++ не распространена
map является std::unordered_map, T имеет конструктор перемещения. void foo(const std::string& s, T&& t) { map.insert(std::pair<std::string, T>(s, t)); } T t; foo("", std::move(t)); Почему этот код не вызывает template<class U, c…
17 фев '16 в 21:40
1
ответ
Rvalue ссылка на временную декларацию
E && e0 = E () ; E e1 ; есть ли различия между этими двумя случаями объявления объекта?;
30 янв '16 в 13:02
1
ответ
Что означают квалификаторы функций-членов (кроме const)?
Общеизвестно, что методы класса могут быть квалифицированы с const - и если они есть, им не разрешено изменять экземпляр, к которому они обращаются (игнорируя mutable так далее). Можно думать об этом, как будто функция-член была автономной, но получ…
05 янв '17 в 21:29
1
ответ
C++: Где мое значение?
Пожалуйста, рассмотрите следующий код: #include <iostream> template <class T> class value_wrapper { public: value_wrapper(T& pv) : v(pv) { std::cout<< "CONS.REF:" << pv << " AT:" << (void*)this << std::e…
10 ноя '15 в 08:19
1
ответ
MSVC++ 2013 позволяет присваивать временные объекты, эффективно обрабатывая их как lvalues
Я сталкивался с этой "особенностью" в MSVC++, и теперь я не уверен, является ли это ошибкой или мое понимание lvalues /rvalues в C++ просто неверно. Для иллюстрации я добавил немного заглушенного кода, но в основном проблема в том, что MSVC++ 20…
27 авг '15 в 00:08
1
ответ
Разрешают ли ссылки на rvalue неявные преобразования?
Является ли следующий код законным? std::string&& x = "hello world"; g ++ 4.5.0 компилирует этот код без проблем.
26 июн '10 в 13:54
2
ответа
Какая структура функций лучше?
Посмотрите на следующий код: class MyClass{ public: MyClass(){} MyClass(MyClass &&){} MyClass(const MyClass &){} }; MyClass f1(){ MyClass &&o=MyClass(); /*...*/ return std::move(o);//or return static_cast<MyClass &&>…
26 окт '11 в 03:20
2
ответа
Безопасно ли передавать обратный вызов std:: function<bool (std:: string)> && (т.е. как перемещение по значению) и каков эффект?
Учитывая следующий рабочий код (main.cpp): #include <functional> #include <iostream> struct worker { std::function<bool(std::string)> m_callback; void do_work(std::function<bool(std::string)> callback) // <--- this line { …
29 авг '18 в 10:30
1
ответ
Превратите литье / конструкцию в идеальную передовую функцию
SSCCE: #include <functional> using std::function; using std::forward; template<typename ToType, typename... FromTypes> ToType construct(FromTypes&&... fromTypes) { return ToType(forward<FromTypes>(fromTypes)...); } class Ma…
24 июн '14 в 15:41
1
ответ
Создание константной lvalue-ссылки из возврата по значению: как это работает?
Отсюда я узнал, что константная ссылка может быть сделана из объекта, возвращаемого значением функцией. Но теперь я спросил себя: куда поместить этот объект, чтобы он был безопасным и не перезаписывался стеками будущих вызовов функций? Рассмотрим э…
13 апр '12 в 18:10