Вопросы по теме 'rvalue'
Почему ссылка C++0x rvalue не используется по умолчанию?
Одной из замечательных новых возможностей нового стандарта C++, C++0x, являются ссылки на rvalue. Ссылка rvalue похожа на ссылку lvalue (обычную), за исключением того, что она может быть привязана к временному значению (обычно временное значение...
3905 просмотров
schedule
11.10.2022
Если функции возвращают целое число, можно ли ему присвоить целое число?
Если функция возвращает int, может ли она быть назначена значением int? Я не вижу особого смысла присваивать значение функции.
int f() {}
f() = 1;
Я заметил, что если функция возвращает ссылку на int, все в порядке. Это ограничено только...
6788 просмотров
schedule
16.07.2023
Почему оператор предварительного приращения дает rvalue в C?
В C++ оператор предварительного приращения дает lvalue, потому что возвращается сам увеличенный объект, а не копия. Но в C это дает rvalue. Почему?
2101 просмотров
schedule
14.06.2022
Что такое decltype (0 + 0)?
(Запрошено ответом .)
Учитывая N3290, §7.1.6.2p4, где элементы списка не пронумерованы, но пронумерованы здесь для нашего удобства:
Тип, обозначенный decltype (e), определяется следующим образом:
если e - это выражение id без...
1307 просмотров
schedule
03.02.2022
С++ 03. Проверяйте rvalue-vs-lvalue во время компиляции, а не только во время выполнения
В C++03 Foreach Boost, используя этот интересный метод , может обнаруживать во время выполнения независимо от того, является ли выражение lvalue или rvalue. (Я обнаружил это с помощью этого вопроса StackOverflow: Rvalues в C++03 )
Вот...
1931 просмотров
schedule
19.03.2022
C++11: Почему разрешено присвоение rvalue?
Насколько я понимаю, причина, по которой опасно возвращать ссылки rvalues из функций, связана со следующим кодом:
T&& f(T&& x) { do_something_to_T(x); return static_cast<T&&>(x); }
T f(const T& x) { T x2 = x;...
4243 просмотров
schedule
14.05.2022
Получение адреса rvalue
class MyClass {
public: MyClass(int a) : a(a) { }
int a;
};
#include <iostream>
void print(MyClass* a) { std::cout << a->a << std::endl; }
int main() {...
1655 просмотров
schedule
21.08.2023
Когда я должен выбрать копирование, а не передачу аргумента по константной ссылке?
Возможный дубликат: является передача по значению является разумным значением по умолчанию в C++11?
Я читаю Хотите скорость? Pass by Value. Дэйв Абрахамс об устранении копирования и RVO. И мне интересно, зачем нам копия элизии?...
2029 просмотров
schedule
27.01.2024
ссылка rvalue и литерал
Рассмотрим код
template <typename... Args>
void foo (Args&& ...)
{
}
template <typename... Args>
void bar (Args&& ... args)
{
foo (std::forward (args)...);
}
int main ()
{
bar (true);
}
~...
219 просмотров
schedule
24.03.2024
Передача значения r в качестве неконстантной ссылки (предупреждение VS C4239)
То, что я хочу сделать (используя лямбду С++), эффективно:
std::vector<MyType> GetTheArray () {return something;}
const auto DoSomething = [](std::vector<MyType> & array)
{
//Some processing that involves either sorting the...
3036 просмотров
schedule
08.02.2023
Нужно ли мне снова использовать std::move?
Для приведенного ниже кода я хочу использовать std::move для повышения эффективности. У меня есть две функции, первая функция использует std::move, а вторая функция просто вызывает первую функцию. Итак, нужно ли мне снова использовать std::move в...
129 просмотров
schedule
30.01.2023
Понимание вывода аргументов шаблона с помощью rvalue/lvalue
Это продолжение шаблон функции не распознает lvalue
Давайте поиграем со следующим кодом:
#include <iostream>
template <class T>
void func(T&&) {
std::cout<<"in rvalue\n";
}
template <class T>
void func(const...
1185 просмотров
schedule
11.03.2024
значение типа std::nullptr_t
Раздел 4.10/1 N3797 гласит:
Константа нулевого указателя — это целочисленный литерал (2.14.2) с нулевым значением или значением prvalue типа std::nullptr_t.
Я думаю, что nullptr является prvalue типа std::nullptr_t . Не могли бы вы...
88 просмотров
schedule
21.05.2024
Построенный временный объект является lvalue?
Предположим, что у меня есть класс с именем Foo с операторами копирования-присваивания, я думал, что это:
Foo() = Foo();
не было разрешено, потому что я думал (еще раз извините), что Foo() был rvalue (поэтому я не могу его присвоить), будучи...
338 просмотров
schedule
28.02.2024
С++ - как вернуть prvalue по ссылке?
Поэтому я реализую собственную оболочку массивов, которая позволит передавать их в качестве аргументов функции и возвращать. Однако у меня возникли проблемы с приведением его к собственному массиву, поскольку собственные массивы не могут быть...
541 просмотров
schedule
20.03.2023
Привязка r-значения к ссылке l-значения является нестандартным расширением Microsoft C++.
Недавно я работал над проектом и решил установить ReSharper C++ в Visual Studio. Когда он проанализировал мой код, он выдал кучу новых предупреждений (очевидно, у меня плохие привычки кодирования...). Один из них, который мне потребовалось некоторое...
3055 просмотров
schedule
18.12.2023
Ссылка на целое число и строку
Может кто-нибудь объяснить мне, почему в VC++ 12 string &s = string("this"); работает, но не int &d = int(10); какие операторы вызываются при инициализации неконстантной ссылки.
Спасибо.
52 просмотров
schedule
20.02.2023
Проверьте, является ли выражение xvalue или prvalue
Я просто хочу проверить некоторые правила, описанные в cppreference . Легко проверить, является ли выражение lvalue или rvalue.
#include <cassert>
#include <iostream>
template <typename T>
bool IsLValue(const char*...
194 просмотров
schedule
09.01.2024
Как программно определить, является ли выражение rvalue или lvalue в С++?
Как лучше всего определить, является ли выражение значением rvalue или lvalue в С++? Возможно, это бесполезно на практике, но поскольку я изучаю rvalue и lvalue, я подумал, что было бы неплохо иметь функцию is_lvalue , которая возвращает true, если...
6967 просмотров
schedule
11.03.2022
путаница, перегружающая функции-члены для rvalue и lvalues
У меня есть следующая установка:
struct foo
{
void bar( ) & { std::cout << "lvalue\n"; }
void bar( ) && { std::cout << "rvalue\n"; }
~foo( ) { bar( ); }
};
int main( int arg, char **argv )
{
foo{...
85 просмотров
schedule
25.04.2024