63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Дедукция параметров шаблона

26.05.2020, 20:01. Показов 2253. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читаю книгу, цитата с нее Когда сам параметр функции является константой, выведенный для параметра Т тип не будет константным типом.
и позже идет вот такой пример
C++
1
2
3
4
5
6
7
template <typename Т> string debug_rep(const T &t) 
{
 //code
}
 
const string *sp = &s; 
cout << debug_rep(sp) << endl
циатата

debug_rep (const string*&) — экземпляр первой версии шаблона с привязкой параметра Т к типу const string*;

почему Т const string *, а не string*?


P.S. и что такое *& ? Как это понимать?

Добавлено через 1 час 59 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
template<typename T>
void f(const T & obj){
}
 
 
int main(){
    std::string str;
    const std::string *sp = &str; 
    f(sp);
    system("pause");
    return 0;
}
Почему при передаче указателя с const верхнего уровня сохраняется этот const? И почему вообще параметр функции ссылка , но каким-то образом она принимает указатель?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2020, 20:01
Ответы с готовыми решениями:

Переменное число параметров шаблона
Здоровеньки булы. Не уверен, что название темы точно отражает суть вопроса. Есть заготовка шаблонного делегата, параметры которого -...

Перехват значений параметров шаблона
Вопрос, собственно, в развитие этой темы - https://www.cyberforum.ru/cpp-beginners/thread930128.html Есть вот такой код: namespace...

Не могу понять объявление параметров шаблона
привет template &lt;typename T, T* Root, template&lt;T*&gt; class Buf&gt; class Structure; я не могу расшифровать 3ий параметр шаблона,...

43
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.05.2020, 12:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ReYalp Посмотреть сообщение
просто функция возвращающся ссылку на lvalue не дает имя этой ссылке, соответственно если нету имени нету lvalue
ссылка на lvalue - это всегда lvalue ))

lvalue-reference не позволяет использовать себя в контексте rvalue в принципе.
(на самом деле студия позволяет. но это не по стандарту)


rvalue биндиццо только на rvalue-reference
но rvalue-reference - может быть lvalue (если есть имя)
или rvalue (если безымянная ссылка)

в чем принципиальная разница между lvalue и rvalue с технической точки зрения?

lvalue - всегда ссылается на реальный объект,
который реально живет в каком то скоупе,
и занимает память.

по этой причине, у lvalue всегда можно взять адрес, например.

а вот rvalue не всегда означает, что объект реально существует.
вычисления связанные с rvalue могут, например, использовать регистры.
а как такового объекта (объект - это кусок памяти) может и не существовать.

идея в том, что rvalue - это такая "промежуточная" штука.
которая используется в контексте "промежуточных вычислений".
и предполагается, что как только выражение завершится, она сдохнет.
по факту её вообще может не быть (компилятор оптимизировал)

и тебе дали возможность различать: кто тут у нас lvalue, а кто rvalue,
что бы ты мог невозобранно грабить временные объекты.
1
28.05.2020, 18:56

Не по теме:

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Именованная ссылка любого типа - это всегда lvalue.
Интересно, что такое неименованная ссылка. :umbrage:

0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,416
28.05.2020, 19:43
Цитата Сообщение от argcargv Посмотреть сообщение

Не по теме:

Интересно, что такое неименованная ссылка. :umbrage:

Результат функции типа int &foo() или int &&bar() - "неименованная ссылка".
0
28.05.2020, 20:15

Не по теме:

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Результат функции типа int &foo() или int &&bar() - "неименованная ссылка".
Ну, если придираться, то ссылочный это возвращаемый тип, а результатом вызова функции является объект. Слова про возврат ссылки в [stmt.return]/1 выпилили, слава Строструпу.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2020, 20:15

Пользовательский deduction guides – для вывода типов параметров шаблона
Здравствуйте уважаемые форумчане. Есть такое задание и с ним я встал в тупик. Необходимо создать шаблон класса, который содержит...

Выбор кода для компиляции на основании сравнения параметров шаблона
Здравствуйте. Помогите, пожалуйста, разобраться со следующим вопросом. Необходимо выбирать компилируемый код в зависимости от какого-либо...

Gtest, доступ к элементам базового класса-шаблона без указания параметров шаблона. баг или фича?
Всем привет. Продолжаю экспертизу gtest/gmock. Количество ошибок и багов зашкаливает. Ничего удивительного, учитывая то, ...

Изменить значения параметров шаблона товара
Здравствуйте! подскажите, как изменить в шаблоне содержимое , например, значения поля keywords

Для использование шаблона переменной требуется список аргументов шаблона
Здравствуйте! Не могу понять в чём проблема. //ALL2.cpp #include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;Windows.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Опции темы

Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru