Форум программистов, компьютерный форум CyberForum.ru

Значения Lvalue и Rvalue - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка многомерной индексации http://www.cyberforum.ru/cpp/thread1793606.html
struct Matrix { int m; Matrix() {} ... operator(int n) {return ...;} }; Как перегрузить индексацию в классе чтобы можно было работать с массивом так:
C++ Как рисовать в видеокарту? Привем всем! Представим, что запущена какая-либо игра, могу ли я рисовать поверх изображения игры, то есть прямо в видеокарту? http://www.cyberforum.ru/cpp/thread1792890.html
Получение нажатия клавиши из неактивного окна C++
Привет всем! Как можно получить нажатую клавишу, если окно приложения не активно?
"std::domain_error" в bool-функции C++
Есть одна функция, которая сохраняет данные json в файл. Когда доходит дело до return, то срабатывает исключение "std::domain_error". bool Json::Save ( std::string file ) { std::ofstream str(file, std::ios::out | std::ios::trunc ); if (str.is_open()) { str << this->GetJsonData() << std::endl; str.close(); return true;
C++ Рефакторинг: функция с большим количеством параметров http://www.cyberforum.ru/cpp/thread1792177.html
День добрый. Скажите плз, гуру рефакторинга. Вот есть функция и в нее передаётся туча параметров. Как лучше исправить ситуацию? На ум приходит а) Создание некой структуры, которая будет содержать все эти поля. Заполняем структуру и передаём ее в фукнцию б) Большую часть переменных сделать полями класса, к которому относится функция. Мне, честно, не нравится ни первый, ни второй вариант. На...
C++ Аналог декоратора Python или ненормальное програмирование Всем привет. Часто приходится делать одну и ту же вещь в коде: DWORD time = ::GetTickCount(); bool result = SomeFunc(); while(!bOK && ::GetTickCount() - time < DEFINED_TIMEOUT) result = SomeFunc(); Что же тут происходит? Есть некая ф-ция, пусть будет SomeFunc. Мы должны иногда выполнять ее пока не достигнем нужного результата или пока не выйдет время таймаута. Например, ф-ция... подробнее

Показать сообщение отдельно
HelicopterK52
659 / 202 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
14.08.2016, 21:22
Цитата Сообщение от hoggy Посмотреть сообщение
и что такое "характиристика выражения" по вашему?
Выше написано: Expression category taxonomy.
Уже перешел на "самопальные" выражения, т.к. по другому не понятно.
Цитата Сообщение от hoggy Посмотреть сообщение
то есть значение, которое выступает в качестве левостоящего
по вашему является "право стоящим"
Еще раз: lvalue/rvalue НИКАК НЕ ОТНОСИТСЯ К ПОЛОЖЕНИЮ ВЫРАЖЕНИЯ.
А лево-право - лишь историческое наследие.
Цитата Сообщение от hoggy Посмотреть сообщение
gvalue - самые обычные (именованные) объекты
У меня как раз блог о перемещении зреет. Там своими словами:
lvalue - фактически, это именованные объекты, а также выражения, результатами которого является lvalue-reference (еще надо доработать по части функций).
xvalue - ссылаются на объекты, которые вот-вот умрут (например, после выхода из функций), так же выражения с rvalue-reference являются xvalue.
glvalue - включает в себя xvalue или lvalue (эдакая надкатегория, фактически, да - это "обычные" именованные объекты).
rvalue - включает в себя xvalue, временные объекты, а также всё то, что не ассоциировано с объектами.
prvalue - это выражения, которые rvalue, но не могут быть xvalue (например, литералы).
Цитата Сообщение от hoggy Посмотреть сообщение
а мы взяли и при помощи std::move заставили компилятор думать,
что объект - временный.
Не только, xvalue - это еще когда объект на грани смерти. А после перемещения объект не умирает же.
C++
1
2
3
4
5
6
Some foo()
{
   Some obj;
   //...
   return obj;//Вот здесь obj будет xvalue, потому как дальше он умрет. Заметьте, в отсутствии всяких оптимизаций, объект будет перемещен без std::move
}
А вообще, пусть каждый остается при своем мнении. Не будем спорить.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru