Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 01.10.2016
Сообщений: 2

Вывод типа, универсальные ссылки, cannot bind lvalue to && и другие

05.01.2017, 17:17. Показов 1917. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня, товарищи.
Вот код: [cut] Вот отчет компиля: [cut]
Объясните мне, пожалуйста, где я не прав. Каким образом константный lvalue литерал вдруг в конце становится rvalue, считается ли в 51 строке, в коде "SomeClass( _Tps&&... args )", _Tps - пакетом универсальных ссылок, вывод типов которых должен происходить по правилам сворачивания ссылок, или же нет? Если да, то почему int&& в выводе компиля, если там же написано, что он пытается забиндить int&& с lvalue, если не универсальная, то почему не универсальная? В универсальных ссылках, емнип, квалификаторы аля const входят в тип параметра, т.е., если args - const int lv, то тип args - const int lv&. Где я не прав?
mingw-w64 6.2.0
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.01.2017, 17:17
Ответы с готовыми решениями:

Это что за иероглифы? if(!((a-4)&~7)&&!!(a-4))
Случайно наткнулся, выражение if(a>=5 & a<=11) "проще" записывается так: if(!((a-4)&~7)&&!!(a-4)) Фигасе проще, что они...

VS 2010 Express Edition && (MFC && ATL(WTL)) ???
Здравствуйте Смогу ли я воспользоваться Легально MFC и ATL(WTL) библиатеками в VS 2010 Express Edition ? Или эти библиотеки...

Ошибка: cannot bind non-const lvalue reference of type 'double&' to an rvalue of type 'double' - почему?
Всем привет! В программе вызываю функцию: UpdateEditControl(IDC_EDIT7, CalculateRecommended(resistor_lim, nominal, sizeNominal)); ...

2
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
06.01.2017, 11:17
Лучший ответ Сообщение было отмечено qioalice как решение

Решение

Цитата Сообщение от qioalice Посмотреть сообщение
Каким образом константный lvalue литерал
Тут уже противоречие в терминах. Литерал сам по себе - это "сырое", нигде не размещённое значение. Lvalue подразумевает хранилище, которое существует до начала операции и продолжает существовать после её завершения. Например, в коде
Code
1
int val = 0;
val - объект, а ноль - литерал. До создания val этого значения может вообще нигде не быть, особенно если val инициализируется при помощи инструкции xor.

Rvalue, в отличие от lvalue, применим к литералам, потому что подразумевает временное хранилище, создающееся непосредственно перед операцией и уничтожающееся сразу после её завершения. В такое хранилище можно и литерал положить.
1
0 / 0 / 0
Регистрация: 01.10.2016
Сообщений: 2
06.01.2017, 16:00  [ТС]
Цитата Сообщение от Nick Alte Посмотреть сообщение
Тут уже противоречие в терминах. Литерал сам по себе - это "сырое", нигде не размещённое значение. Lvalue подразумевает хранилище, которое существует до начала операции и продолжает существовать после её завершения. Например, в коде
Да, извиняюсь, ошибся при написании. Rvalue литерал который становился lvalue, с учетом всех forward`ов в коде.
А в общем, подумать на свежую голову оказалось лучше, проблема решена, тс дурак и прочее. Проблемы были в:
1. При инстанцировании шаблона класса, аргумент шаблона с && в каких-то методах класса - rvalue&& а не универсальная. Тут да, сам дурак, подумать надо было.
2. Копания в cppreference дали ответ, что std::get<I> для std::tuple возвращает I элемент tuple, причем & или && определяется от того, был std::get вызван для lvalue или rvalue tuple. Не шибко очевидная вещь, учитывая то, что сам tuple содержит точные типы хранимых в себе элементов. Помогло std::forward для каждого элемента, приводя к типу std::tuple_element::type.

За ответ в любом случае спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.01.2017, 16:00
Помогаю со студенческими работами здесь

Error: cannot bind 'std::basic_ostream<wchar_t>' lvalue to 'std::basic_ostream<wchar_t>&&'|
Ругается на строку Log&lt;&lt;StripXML(__PRETTY_FUNCTION__)&lt;&lt;std::endl;. Функция такая: std::string StripXML ...

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;)
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A ...

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

Error: lvalue required as unary ‘&’ operand
Пишу по книге Дейтела. Функция вставки в дерево. Функции из btree_item.cpp BTreeItem::BTreeItem(const Square&amp; square) { ...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9&
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru