|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|||||||||||
Дедукция параметров шаблона26.05.2020, 20:01. Показов 2239. Ответов 43
Метки нет (Все метки)
Читаю книгу, цитата с нее Когда сам параметр функции является константой, выведенный для параметра Т тип не будет константным типом.
и позже идет вот такой пример
debug_rep (const string*&) — экземпляр первой версии шаблона с привязкой параметра Т к типу const string*; почему Т const string *, а не string*? P.S. и что такое *& ? Как это понимать? Добавлено через 1 час 59 минут
0
|
|||||||||||
| 26.05.2020, 20:01 | |
|
Ответы с готовыми решениями:
43
Переменное число параметров шаблона Перехват значений параметров шаблона Не могу понять объявление параметров шаблона |
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 26.05.2020, 21:45 | |
|
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||
| 26.05.2020, 21:53 [ТС] | ||
|
DrOffset, почему Вы называете
Добавлено через 1 минуту и при том что const в ссылках всегда нижнего уровня
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||||||||||||||||||||||||||||
| 26.05.2020, 21:57 | ||||||||||||||||||||||||||||||||
|
ReYalp,
Чтобы записать константный указатель, как вы делаете?
Если вы напишете
Такой у С\С++ синтаксис. Если вы при подстановке в
то что у вас получится? Наверное
К чему тут теперь что относится? Если бы в С++ можно было ставить скобки, как в моем псевдокоде, то можно было бы яснее написать
0
|
||||||||||||||||||||||||||||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 26.05.2020, 22:00 [ТС] | |
|
DrOffset, тоесть const const type * всегда даст const type * const?
Добавлено через 1 минуту DrOffset, но как он верхний если он нижний же, верхним он стает,получается, только если туда указатель передать, если не передавать он нижним будет
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 26.05.2020, 22:01 | ||
|
ReYalp, если бы так можно было писать вообще, то да. Это псевдокод, еще раз. Просто чтобы вы прмиерно понимали где какие квалификаторы появляются и на что влияют.
Добавлено через 1 минуту Я вам в ее контексте и отвечаю. Ссылка тут не играет вообще роли, чтобы разбираться в ситуации она не нужна.
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||
| 26.05.2020, 22:04 [ТС] | ||
|
DrOffset, так получается он стает верхним только потому что я передаю указатель?
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 26.05.2020, 22:06 | ||
|
ReYalp, и мне в четыре раза сильнее непонятны ваши вопросы, после того, как вы плюсанули ответ TheCalligrapher, который написал о том же самом
![]() Добавлено через 1 минуту ![]() По отношению к всему параметру, вместо со ссылкой - это конст нижнего уровня, но это в данном контексте вообще не предмет разговора. Ибо у ссылки семантика того объекта, на который она ссылается.
1
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||||||
| 26.05.2020, 22:07 [ТС] | ||||||
|
DrOffset, а если юрать не ссылки с указателями , const в таком случае допустимо называть верхним? или он просто const ?
0
|
||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 26.05.2020, 22:12 | |
|
ReYalp, тут он всегда верхний. Поэтому слово "верхний" можно и не говорить.
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 26.05.2020, 22:38 | ||
|
ты получишь ссылку на неизменяемый объект. ну или: ссылку на неизменяемое T. весь фокус в том, что const T - неизменяемое T. и если T - это указатель, тогда const T - это неизменяемый указатель. а для неизменяемых указателей const пишется справа, после звездочки. int ==> const int& т.к T = int, значит const T = const int. const int ==> const int& т.к T = const int, значит const T = const const int, двойной const схлопывается до одинарного. int* ==> int* const& т.к T = int*, значит const T = int* const (обрати внимание: const справа от звездочки) int* const ==> int* const& т.к T = int* const , значит const T = int* const const (обрати внимание: const справа от звездочки) двойной const схлопывается до одинарного. const int* ==> const int* const& т.к T = const int* , значит const T = const int* const const int* const ==> const int* const& т.к T = const int* const, значит const T = const int* const const (обрати внимание: const справа от звездочки) двойной const схлопывается до одинарного.
1
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||||||||||||||||
| 27.05.2020, 00:48 [ТС] | ||||||||||||||||
|
DrOffset, а еще вот такой случай.
Есть вот этот шаблон функции
0
|
||||||||||||||||
|
Вездепух
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,407
|
|||
| 27.05.2020, 00:55 | |||
t1 и t2 внутри функции flip2 - это lvalue. Именованная ссылка любого типа - это всегда lvalue.t1 и t2 - "универсальные ссылки", которые работают именно через свертывание.Во-вторых, какая разница вообще, есть тут свертывание ссылок или нет? Еще раз: любая именованная ссылка - это lvalue.
0
|
|||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 27.05.2020, 01:05 [ТС] | |
|
TheCalligrapher, Тоесть revalue ссылка это lvalue ссылка?
Добавлено через 5 минут Или сама ссылка это lvalue?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 27.05.2020, 01:55 | |||||||
|
rvalue - это выражение, в контексте которого осуществляется доступ к безымянному объекту. безымянные объекты: это либо временные объекты. либо обычные, но в контексте выражения у них нет имени. не важно какая у тебя там ссылка. если у ссылки есть имя - значит уже не безымянная, значит уже не может быть rvalue рассмотрим пример:
int&&функция foo принимает int&&так в чем же дело? дело в том, что rvalue - это либо prvalue (временный объект, у которых как известно нет имени), либо xvalue: обычный объект, но его лишили имени при помощи вспомогательной функции (std::move) именованный объект - всегда lvalue, просто потому что у него есть имя.
0
|
|||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 27.05.2020, 10:07 [ТС] | |
|
hoggy, Тоесть любые параметры любых функций это всегда lvalue?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||
| 27.05.2020, 10:31 | ||||||||||||
|
без дополнительных телодвижений - lvalue вот этот код написал балбес:
1
|
||||||||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 27.05.2020, 10:48 [ТС] | |
|
hoggy, и ещё одно, в примере выше там где параметр функции это. ссылка на rvalue (прошлый Ваш пример), если туда передать аргументом rvalue то выходит что. rvalue становится lvalue?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 27.05.2020, 10:59 | |||||||
|
параметр функции имеет имя. и пока в выражении фигурирует это имя, он будет lvalue
если же запихивать именованный объект: bar(rval) будет lvalue
1
|
|||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||||||
| 27.05.2020, 11:36 [ТС] | ||||||
|
hoggy, а функция как-то может вернуть именно lvalue? Насколько я понимаю то никак
Добавлено через 28 минут hoggy, ну просто функция возвращающся ссылку на lvalue не дает имя этой ссылке, соответственно если нету имени нету lvalue, или я что-то не тка понял)
0
|
||||||
| 27.05.2020, 11:36 | |
|
Выбор кода для компиляции на основании сравнения параметров шаблона Gtest, доступ к элементам базового класса-шаблона без указания параметров шаблона. баг или фича? Изменить значения параметров шаблона товара
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|