Описание тега pass-by-rvalue-reference
2
ответа
Передать по ссылке как значение
Когда я пытаюсь вызвать элемент перемещения как передачу по ссылке, компилятор выдает ошибку, но когда я переопределяю функцию-член для передачи по значению, это работает. Могу ли я не использовать передачу по ссылке в качестве значения в моей функц…
05 авг '15 в 01:35
2
ответа
Имеют ли ссылки на rvalue те же издержки, что и ссылки на lvalue?
Рассмотрим этот пример: #include <utility> // runtime dominated by argument passing template <class T> void foo(T t) {} int main() { int i(0); foo<int>(i); // fast -- int is scalar type foo<int&>(i); // slow -- lvalue ref…
14 авг '18 в 03:00
1
ответ
Запутанные сообщения об ошибках с именованными ссылками rvalue
Учтите следующее: struct my_type {}; my_type make_my_type() { return my_type{}; } void func(my_type&& arg) {} int main() { my_type&& ref = make_my_type(); func(ref); } Излишне говорить, что этот код не компилируется. Я понимаю, что м…
15 окт '14 в 04:47
2
ответа
Шаблоны и использование ссылок на значения в качестве параметра
Итак, у меня есть std::map< std::string, boost::any > называется OptionsMap и я хочу создать функцию, которая принимает любой тип (следовательно, шаблон) и сохраняет его на карте. Будет ли следующий код работать? template <typename T> vo…
20 июл '14 в 20:45
3
ответа
Возврат аргумента, переданного по ссылке rvalue
Если у меня есть класс A и функции A f(A &&a) { doSomething(a); return a; } A g(A a) { doSomething(a); return a; } конструктор копирования вызывается при возврате a от f, но конструктор перемещения используется при возврате из g, Однако из т…
17 июн '16 в 01:07
2
ответа
Передать по значению и справке
У меня есть практический вопрос, который поставил меня в тупик для предстоящего сертификационного теста. Пожалуйста, помогите в любом случае, что вы можете! Я думаю, что понимаю, как получить ответную часть ответа по значению, но НЕТ ИДЕИ в ответной…
14 июн '14 в 04:07
4
ответа
Предотвратить передачу временного объекта
У меня есть класс, который "запоминает" ссылку на некоторый объект (например, целочисленная переменная). Я не могу заставить его ссылаться на значение, которое немедленно уничтожается, и я ищу способ защитить пользователей моего класса от случайных …
20 июн '12 в 20:38
4
ответа
Каков наиболее эффективный способ установить переменную класса, используя rvalue в C++?
Я только начал работать с C++11 r-значениями. Я прочитал несколько уроков, но я не нашел ответа. Каков наилучший (самый эффективный) способ установить переменную класса? Код ниже верен или нет? (предположим, что std::string имеет определенный констр…
22 июн '17 в 14:01
1
ответ
Повторно использовать конструктор. Передайте rvalue в const lvalue и не повторяйте реализацию
У меня есть идея, как упростить удаление повторений кода. Пожалуйста, помогите мне понять, можно ли это использовать, хорошо, и, возможно, давайте обновимся. struct NetAdres { /*#1*/NetAdres(const std::string &str, uint16_t port); //#1 /*#2*/Net…
18 ноя '16 в 18:20
1
ответ
Совместное использование реализаций для перегрузок const lvalue (const T&) и rvalue (T&&): точно так же, как это делается для константных и неконстантных перегрузок
Фон Следующий блок кода появляется в известной книге Скотта Мейерса "Эффективный C++", пункт 3: class TextBlock { public: ... const char& operator[](std::size_t position) const { ... // do bounds checking ... // log access data ... // verify da…
30 мар '15 в 12:38
1
ответ
Передача по значению или универсальная ссылка
Я хочу разработать небольшой полиморфный класс со стиранием типов, и мне интересно, какая версия шаблонного конструктора лучше и должна использоваться. Мы можем передать по значению: class A { ... template< typename T > A( T t ) { /* create th…
26 июн '13 в 09:31
1
ответ
Возвращаемое значение rvalue против возврата по значению в типе возврата функции
В моем коде у меня есть функция, которая создает строку из части данных, а затем возвращает ее. Эта строка больше нигде не используется, поэтому принимающая сторона может использовать для нее перемещение-назначение или перемещение-инициализацию. std…
29 мар '15 в 17:41
3
ответа
В чем разница между этими двумя определениями шаблонов функций?
template <typename Func, typename... Args> static void WraperFunc(Func func, Args &&... args) { SomeFunc(func, args...); } против template <typename Func, typename... Args> static void WraperFunc(Func func, Args ... args) { SomeF…
03 авг '15 в 19:31
1
ответ
Как правильно переопределить "отсутствие неконстантной ссылки на временный объект"
У меня есть класс Foo, Foo имеет несколько неконстантных методов. Я в порядке с вызовом неконстантных методов на временной Foo объект; Меня интересует только то, что методы на самом деле возвращают, чем то, что они делают с Foo сам объект Первый воп…
19 июн '13 в 19:28
2
ответа
T&& в шаблонной функции и классе
Я только что наткнулся на это T&& в классе и функции означает разные вещи.В функции: template<class T> void f(T&& t){}; // t is R or L-value ... int i=0; f(i); // t in f is lvalue f(42); // t in f is rvalue В классе: template&l…
07 сен '12 в 18:12
0
ответов
Ссылка на rvalue может связываться только с неконстантными значениями?
В предыдущем сообщении указывалось, что ссылка на rvalue может связываться только с неконстантными значениями: Разница между возвратом константной ссылки и ссылки на rvalue Однако, если это правда, как работает идеальная пересылка? Для этого определ…
01 мар '17 в 18:57
3
ответа
Почему я не могу передать rvalue-ссылку, как это делается для другой функции в C++11?
У меня есть код: void f(int&& i) { auto lambda = [](int&& j) { (void)j; } lambda(i); } int main() { f(5); } Clang ++ выдает ошибку: no known conversion from 'int' to 'int &&' for 1st argument Почему i меняет свой тип на int к…
21 фев '14 в 17:34
8
ответов
Является ли возврат по значению всегда постоянным?
Этот код не компилируется: class C {}; void foo (C& c) {} C bar() { return C(); } int main() { foo(bar()); } Ошибка компиляции (GCC 4.1.2) в строке foo(bar()): неверная инициализация неконстантной ссылки типа "C&" из временного типа "C" Как bar(…
14 ноя '12 в 19:09
1
ответ
Как принять неконстантный тип параметра rvalue и lvalue
Я неоднократно сталкиваюсь с проблемой принятия неконстантного ссылочного параметра, так как кажется, что принятие параметра rvalue предотвращает принятие lvalues и наоборот. Вот пример void read(File &file)// I want to modify file { SomeClass…
21 ноя '18 в 22:48
1
ответ
Привязка const rvalue к ссылке rvalue
При реализации BS Tree я заметил некоторые вещи, в которых я не был так уверен, так как начал использовать умные указатели C++11, и это заставляет меня задуматься, почему это так. Код ниже работает нормально, если я использую пары init-brace {} вмес…
13 сен '14 в 06:54