Вопросы по теме '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 просмотров
schedule
17.07.2023
Итак, как в наши дни пишутся базовые классы на C++11?
Обновление: я использую MSVC10, что не дает мне семантики перемещения по умолчанию
Допустим, я хочу создать обычный класс с парой участников, не являющихся членами модуля;
class Foo {
NonPodTypeA a_;
NonPodTypeB b_;
}
Как обычно, я...
311 просмотров
schedule
02.07.2022
Законно ли брать адрес ссылки 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 просмотров
schedule
21.04.2023
Ссылка 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 просмотров
schedule
21.06.2022
Верно ли, что переменные, адрес которых можно взять, являются 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 просмотров
schedule
11.08.2022
Почему я могу предотвратить неявные преобразования для примитивов, но не для определяемых пользователем типов?
Стандарты High Integrity C++ предполагают, что аргументы rvalue для функций могут быть удалены, что предотвращает неявные преобразования....
118 просмотров
schedule
16.02.2023
почему встроенное присваивание возвращает неконстантную ссылку вместо константной ссылки в С++?
(обратите внимание, что в заголовке исходного вопроса было «вместо rvalue», а не «вместо ссылки на константу». Один из приведенных ниже ответов является ответом на старый заголовок. Это было исправлено для ясности)
Одна общая конструкция в C и C++...
572 просмотров
schedule
26.05.2024
Почему инициализация неконстантного & из 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