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

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

05.01.2017, 17:17. Показов 1893. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru