rvalue — все вопросы

1ответ
4 голоса
Что такое использование ссылочных переменных-членов rvalue
Мне было интересно, есть ли смысл иметь ссылочную переменную rvalue (не как параметр функции)? Я понимаю использование ссылки rvalue, когда она используется как переменная функции, поскольку тогда м
3ответа
4 голоса
почему мой построенный временный объект const не является изменяемым?
У меня есть класс K, и я создаю объект при вызове функции test. Поэтому я считаю, что созданный K называется r-значением . (Это правда?) Но я озадачен и обеспокоен тем, что объект K явно const
2ответа
4 голоса
C ++ Нужен ли специальный rvalue-вариант перегруженного оператора?
В вопросах и ответах, таких как Перегрузка операторов , указывается, что лучший способ перегрузить бинарный оператор, например ---- +: = 0 =: + ---- is: operator+ Таким образом, class X { X&
3ответа
4 голоса
Определение значения - это объекты, которым нельзя присваивать значения, но почему литералы являются значениями?
Итак, я в расширенном обзоре наших будущих тем, и я столкнулся с lvalues ​​и rvalues, хотя определение меня смущает. Почему литерал является lvalue? «rvalue относится к значению данных, которое х
1ответ
4 голоса
Вывод типа шаблона для аргументов rvalue
Я понимаю метод пересылки в C ++ 11.foo теперь будет принимать как lvalues, так и rvalues.Моя проблема в том, что я перегружаю foo.Рассмотрим этот простой код:Если я вызову ---- +: = 2 =: + ---- с объ
1ответ
4 голоса
C ++ Почему я не могу использовать своп для объекта с удаленным конструктором по умолчанию [duplicate]
На этот вопрос уже есть ответ здесь:Почему конструктору перемещения требуется конструктор по умолчанию для его членов?3 ответаЯ пытаюсь реализовать конструктор перемещения для объекта A, который испол
2ответа
4 голоса
Тип только для перемещения возвращается в конструктор преобразования
Следующий код возвращает тип только для перемещения, который затем должен быть преобразован в другой тип с помощью конструктора преобразования.Это вызвало у меня ошибку с моим компилятором и могло быт
5ответов
4 голоса
Почему ссылка-значение в качестве возвращаемого типа не может быть инициализацией неконстантной ссылки?
Я прочитал этот вопрос и знаю, что rvalue referenec - это lvalue.Однако для этого кода, пример 1,Когда я скомпилирую это:Поэтому компилятор C ++ сообщает мне, что тип возвращаемого значения ---- +: =
2ответа
4 голоса
Законно ли взять адрес ссылки на постоянное значение?
#include <iostream> int foo() { return 0; } int main() { const int& a = foo(); std::cout << &a << std::endl; } В этом коде a связывается с r-значением. Законно ли
1ответ
4 голоса
Rvalue ссылочный и буквальный
Рассмотрим код template <typename... Args> void foo (Args&& ...) { } template <typename... Args> void bar (Args&& ... args) { foo (std::forward (args)...); } int m
1ответ
4 голоса
Почему я не могу передать rvalue std :: stringstream по значению в функцию?
Почему этот код не компилируется?Я получаю эту ошибку:Если я заменю ---- +: = 2 =: + ---- другим типом, который не может быть скопирован, он будет работать нормально.Разве это не должно использовать -
5ответов
4 голоса
Почему некоторые компиляторы c ++ позволяют вам брать адрес литерала?
Компилятор C ++, который я не назову, позволяет вам взять адрес литерала, int * p = & 42;Очевидно, что 42 - это r-значение, и большинство компиляторов отказываются это делать.Зачем компилятору это
1ответ
4 голоса
почему c ++ не использует RVO при возврате локального std :: stringstream?
Я прочитал много информации о rvalue и возвращении локальных переменных в C ++> = 11. Из того, что я понял, это то, что «просто возвращайте по значению, не используйте перемещение /вперед и не доба
5ответов
4 голоса
Передача r-значения как неконстантного задания (предупреждение VS C4239)
То, что я хочу сделать (используя лямбда C ++), это:Это кажется недопустимым в стандартном C ++, потому что значение r не может быть передано как неконстантная ссылка.Мои вопросы:1) Есть ли способ сде
1ответ
4 голоса
Почему этот объект считается значимым?
Почему объект, который я передаю в конструктор ---- +: = 0 =: + ---- , считается значением (временным)?Я знаю, что установка параметра на ---- +: = 1 =: + ---- устранит ошибку, но я хочу понять, что п
1ответ
6 голосов
Почему `++ a ++` не компилируется в C ++, а `(++ a) ++`? [Дубликат]
     На этот вопрос уже есть ответ здесь:                   Почему ++ я считаю значением l, но я ++ нет?                                      11 ответов                               
4ответа
8 голосов
Временные значения C ++ в шаблоне
Не могли бы вы объяснить мне разницу между механизмом следующего: int function(); template<class T> void function2(T&); void main() { function2(function()); // compiler error, inst
2ответа
8 голосов
Должны ли неявно сгенерированные операторы присваивания быть & иая квалификация?
Следующий код компилируется без проблем в gcc 4.8.1: #include <utility> struct foo { }; int main() { foo bar; foo() = bar; foo() = std::move( bar ); } Похоже, неявно сгенер
4ответа
8 голосов
Если функции возвращают int, можно ли присвоить ему int?
Если функция возвращает значение типа int, может ли оно быть присвоено значением типа int? Я не вижу смысла присваивать значение функции. int f() {} f() = 1; Я заметил, что если функция возвра
5ответов
9 голосов
Привязка временная к ссылке lvalue
У меня есть следующий код string three() { return "three"; } void mutate(string& ref) { } int main() { mutate(three()); return 0; } Вы можете видеть, что я передаю three ()
1 2

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132