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

Почему взятие адреса временного незаконно?
Я знаю, что код, написанный ниже, незаконен void doSomething(std::string *s){} int main() { doSomething(&std::string("Hello World")); return 0; } Причина в том, что нам не разрешено брать адрес временного объекта. Но мой...
10975 просмотров
schedule 25.05.2022

Произойдет ли преобразование lvalue в rvalue?
Стандарт C ++ (4/5) преобразование lvalue-to-rvalue не выполняется для операнда унарного оператора &. Например: int x; int *p = &x; В приведенном выше случае p являются ли &x оба значения l? или Какой был бы подходящий...
1363 просмотров

Итак, как в наши дни пишутся базовые классы на C++11?
Обновление: я использую MSVC10, что не дает мне семантики перемещения по умолчанию Допустим, я хочу создать обычный класс с парой участников, не являющихся членами модуля; class Foo { NonPodTypeA a_; NonPodTypeB b_; } Как обычно, я...
311 просмотров

Законно ли брать адрес ссылки const lvalue?
#include <iostream> int foo() { return 0; } int main() { const int& a = foo(); std::cout << &a << std::endl; } В этом коде a привязывается к rvalue. Законно ли брать его адрес? (И под законным я подразумеваю:...
643 просмотров
schedule 18.11.2022

Возврат указателя по значению не перемещает объект
Я скомпилировал этот код с помощью vs2011. Сначала печатается конструктор , а затем копирующий конструктор . Но если я изменю функцию так, чтобы она возвращала a вместо ap , она переместит объект. Это баг или почему он так себя ведет? Разве...
119 просмотров
schedule 11.04.2022

Как мне написать разные операторы [] для LValue и RValue?
Я пытаюсь связать библиотеку C с моим проектом C++. Библиотека имеет свой собственный векторный тип, предположим, что это VECTOR , и она обеспечивает доступ к элементам: int vector_set_value(VECTOR* vec, int index, double new_value); int...
320 просмотров
schedule 14.05.2023

Перегрузка неконстантной ссылочной функции С++
В следующем коде: int foo(const int& f) //version 1 { int g = f; return int(foo(g)); // calls itself, turning into SO } int& foo(int& f) //version 2 { f *= -1; return f; } int main() { int f = 11; cout...
110 просмотров
schedule 27.01.2024

C++ перегрузка ссылки rvalue, отличная от конструктора перемещения
Может ли кто-нибудь привести пример функции, перегруженной параметром ссылки rValue, отличным от конструктора перемещения или оператора присваивания перемещения , который в полной мере использует тот факт, что переданный аргумент является значением...
201 просмотров
schedule 05.11.2022

Неоднозначная ошибка С++ 11 с двумя операторами (одно значение lvalue, второе значение r)
ОБНОВЛЕНИЕ внизу. Я хочу, чтобы make void tree::operator = ( tree t ) использовал значение rvalue one (в этом случае, как правило, я хочу обрабатывать их по-разному из-за эффективности) Я закодировал его, использовал std::move, чтобы...
658 просмотров

Ссылка Rvalue рассматривается как Lvalue?
Я опубликовал этот ответ: https://stackoverflow.com/a/28459180/2642059 , который содержит следующий код: void foo(string&& bar){ string* temp = &bar; cout << *temp << " @:" << temp << endl; } bar...
6195 просмотров
schedule 31.12.2022

Условное выражение с операндами типа lvalue
Я пытаюсь выяснить, какой должна быть категория значений результата условного выражения, если его второй и третий операнды являются l-значениями типа класса. Пример: struct S {}; S x, y; void foo(bool cond) { cond ? x : y; // what is the...
75 просмотров
schedule 30.12.2021

C++ Определить свойство RValue в классе
У меня есть вектор со значением: obj={1.0,2.0,3.0, 4.0,5.0,6.0 ,7.0,8.0,9.0,10.0} Предположим, что математически obj разбит на три подвектора: obj={P, Q , R} где P={1.0,2.0,3.0} , Q={4.0,5.0,6.0} и R={7.0,8.0,9.0,10.0} и...
79 просмотров
schedule 10.05.2022

Почему нельзя перегружать только один ref-qualifier?
Судя по всему, перегрузка ref-квалификаторов не допускается — этот код не скомпилируется, если вы удалите & или && (только токены, а не их функции): #include <iostream> struct S { void f() & { std::cout <<...
947 просмотров

Верно ли, что переменные, адрес которых можно взять, являются lvalue?
Недавно, читая блог об универсальной ссылке Скотта Мейерса, я наткнулся на утверждение, что «если вы можете взять адрес выражения, выражение является lvalue». но правда ли это Предположим, у меня есть следующий код class Test { }; int main()...
89 просмотров
schedule 13.08.2023

Можно ли создать std::map как rvalue?
Я не уверен, является ли это ошибкой моего синтаксиса C++ или это что-то, что вообще невозможно выполнить. Я хочу определить класс, который принимает std::map в качестве аргумента конструктора. Затем я хочу создать экземпляр этого класса, передав...
1004 просмотров
schedule 07.03.2024

пытаясь различать разные виды rvalue - литералы и нелитералы
Я хочу иметь метод, который можно вызывать только с lvalue, поэтому я сделал следующее: template <typename T> MyClass& cache(T&) {} template <typename T> MyClass& cache(const T&&) = delete; И это прекрасно...
248 просмотров

Почему я могу предотвратить неявные преобразования для примитивов, но не для определяемых пользователем типов?
Стандарты High Integrity C++ предполагают, что аргументы rvalue для функций могут быть удалены, что предотвращает неявные преобразования....
118 просмотров
schedule 16.02.2023

почему встроенное присваивание возвращает неконстантную ссылку вместо константной ссылки в С++?
(обратите внимание, что в заголовке исходного вопроса было «вместо rvalue», а не «вместо ссылки на константу». Один из приведенных ниже ответов является ответом на старый заголовок. Это было исправлено для ясности) Одна общая конструкция в C и C++...
572 просмотров

Почему инициализация неконстантного & из rvalue недопустима?
Взглянем на следующий код: #include<string> #include<iostream> using T = std::string; void baz(T& v) { std::cout << v << std::endl; } void boo(const T& v) { std::cout << v << std::endl; } int...
106 просмотров
schedule 01.06.2022

lvalue и rvalue для пре / постфиксного приращения
Изучение lvalue и rvalue. Определение: все, что может быть "адресом", является левым значением, а в противном случае - rvalue. Я проверил приоритет оператора, приращение префикса и постфикса имеет более высокий приоритет, чем оператор "адрес"....
633 просмотров
schedule 09.05.2022