170 похожих чатов

Добрый день. Может кто-нибудь рассказать доходчиво про Template argument deduction

и auto deduction rules? А также разницу между ними
Как я понял, template генерирует все возможные варианты и подставляет аргумент в них до тех пор, пока не подойдёт нужный

35 ответов

24 просмотра

На RSDN было сообщение Толи Широкова про это, там 10 строк и всё сразу ясно. У Jason Turner тоже можно найти видео. (ты понял неправильно)

Hidanio- Автор вопроса
Hidanio- Автор вопроса
Ilya Zviagin
На RSDN было сообщение Толи Широкова про это, там ...

Попытка номер два) Компилятор пытается вывести аргумент шаблона, сравнивая тип соответствующего параметра шаблона с типом аргумента, используемого при вызове функции, т.е. возможно ли подставить условно double в шаблонную функцию А при auto вычисляется автоматически из инициализатора переменной, тк нельзя писать условно auto t; В случае функций тип будет оцениваться из возвращаемого выражения return. Правильно ли я понял на этот раз?

Hidanio- Автор вопроса
Ilya Zviagin
Код где?

Так нет кода...я пытаюсь теорию понять) Как работает Template argument deduction и auto deduction rules

Hidanio- Автор вопроса
Ilya Zviagin
@anatolijs помогай, я лично не врубаюсь...

Мой вопрос можно переформулировать так: "Как определяет тип данных auto и templates, а также разница между ними"

Hidanio
Так нет кода...я пытаюсь теорию понять) Как работа...

Вкратце фича в этом: - шаблонам функций в 99% не надо указывать параметры шаблонов - шаблонам классов в 100% случаев НАДО указывать параметры шаблона явно - ДАЛЕЕ ФИЧА: мы говорим компилятору, что ВОТ ЭТОТ КОНСТРУКТОР шаблонного класса (может и любую функцию можно) можно использовать без параметров шаблона класса, и те параметры, что использованы при вызове одной из этих функций, будут параметрами для инстанциации шаблона класса.

Hidanio
Так нет кода...я пытаюсь теорию понять) Как работа...

auto deduction rules — эт я не понял что, и при чем оно тут... (ни при чём)

Hidanio- Автор вопроса
Ilya Zviagin
Вкратце фича в этом: - шаблонам функций в 99% не ...

для классов можно CTAD нынче использовать, упрощает жизнь

Липпман может. Также у майерса прям в первой главе по эффективному современному С++ рассказано.

Nastya Medveda
Липпман может. Также у майерса прям в первой главе...

У Липпмана не полностью, у Майерса по-моему все corner cases есть

Ilya Zviagin
Это про auto ...

ну там и auto deduction rules и template тоже

Hidanio
Так нет кода...я пытаюсь теорию понять) Как работа...

А что за auto deduction rules и как это в твоей голове связано с CTAD ?

Nastya Medveda
Липпман может. Также у майерса прям в первой главе...

это всё прекрасно, но зачем, если есть https://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121

Denis P
это всё прекрасно, но зачем, если есть https://ww...

Потому что не все хотят платить 64 доллара за Complete Guide. Некоторым достаточно не очень полного, но более краткого.

Nastya Medveda
Потому что не все хотят платить 64 доллара за Comp...

я его купил в электронном виде после цпп раша)

Hidanio- Автор вопроса
Ilya Zviagin
А что за auto deduction rules и как это в твоей го...

Ну в том плане что и то автоматически тип подставляет, и то Но есть же разница

Denis P
это всё прекрасно, но зачем, если есть https://ww...

спасибо, теперь знаю что прочитать следующим после Майерса

Hidanio- Автор вопроса
Ilya Zviagin
Это совершенно разные вещи.

Ну вот если разные, то в чём? Как раз этими вопросами и задаюсь)

Hidanio
Ну вот если разные, то в чём? Как раз этими вопрос...

Ну вот БАБА, и КОШКА. Совершенно же разные вещи, так? НО ВОТ В ЧЁМ ОНИ РАЗНЫЕ ?

Ilya Zviagin
Вообще, надо было ДО

Почему же ? Майерса читал после Липпмана через строчку иногда, мало нового но много полезного.

Michael Chambers
Почему же ? Майерса читал после Липпмана через стр...

Потому что это — учебник по шаблонам в С++, базовый.

Hidanio- Автор вопроса
Ilya Zviagin
Ну вот БАБА, и КОШКА. Совершенно же разные вещи, т...

Ладно...Просто на первый же взгляд кажется похожими вещами, и то автоматически подставляет, и то

Hidanio- Автор вопроса
Hidanio
Ладно...Просто на первый же взгляд кажется похожим...

Но на этом их похожесть заканчивается

Если не ищите быстрых ответов и готовы к видео-лекциям, то у Константина Владимирова на эту тему есть как материал как уровнем по-проще, так и по-сложнее

Hidanio- Автор вопроса

Что касается отличий между template argument deduction и auto deduction rules, то, если я сам всё верно помню, они идентичны. Но в случае вывода аргументов функций больше сложностей не относящихся непосредственно к обсуждаемому вопросу, но связанных с ним (например, выбор перегрузки)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта