|
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
|
||||||
typename в шаблонах09.07.2020, 23:39. Показов 4822. Ответов 40
Вечер добрый.
Есть два примера: в первом - использование свойств типа is_array_v для преобразование Т внутри угловых скобок <> с оператором =, а во втором - ... тоже преобразование, но только с другой реализацией? Или как?
0
|
||||||
| 09.07.2020, 23:39 | |
|
Ответы с готовыми решениями:
40
Typename в шаблонах класса Access97 typename typename и NULL |
|
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
|
|||||||||||
| 10.07.2020, 16:32 [ТС] | |||||||||||
|
oleg-m1973, из справочника даны два варианта(ниже) и автор считает их оба верными. Но вопрос мой в другом.
//1
0
|
|||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 10.07.2020, 16:36 | |||||||
|
Добавлено через 1 минуту Вот тебе ещё один вариант
0
|
|||||||
|
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
|
||
| 10.07.2020, 16:36 [ТС] | ||
|
oleg-m1973,
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 10.07.2020, 16:38 | |
|
typename = это значение по-умолчанию для параметра шаблона, по-аналогии с параметрами функции
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 10.07.2020, 16:54 | ||
|
в этом варианте, в качестве TRes можно явным образом указать что угодно.
0
|
||
|
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
|
|
| 10.07.2020, 17:14 [ТС] | |
|
Я извиняюсь, что криво вопрос задал. В первом примере, наверное, больше проверка была на is_array_v, с последующем включении типа (потому как bool), а во втором примере уже преобразование Т с помощью remove_reference_t<T>. Тогда, правильно ли я понимаю, что bool мы можем использовать внутри <>, а преобразование только внешне?
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 10.07.2020, 17:51 | ||
Сообщение было отмечено IP_TCP как решение
РешениеДобавлено через 1 минуту В параметрах шаблона, в скобках <>, слово typename или class означает, что должен передаваться тип, иначе - константа Добавлено через 1 минуту "Внешне" typename служит подсказкой компилятору, что зависимый тип, тот который после ::, является именно типом данных
1
|
||
|
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
|
|
| 10.07.2020, 18:34 [ТС] | |
|
oleg-m1973, спасибо. Вроде какое-то понимание есть.
0
|
|
|
"C with Classes"
|
|
| 10.07.2020, 20:39 | |
|
DrOffset, TheCalligrapher, зачем может понадобиться фиктивный параметр шаблона, где почитать?
Добавлено через 31 минуту как я пока понял, они используются для отключение шаблонов с помощью enable_if<> в связке с технологией SFINAE?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 10.07.2020, 21:13 | ||
|
Параметр шаблона по умолчанию имеет в общем случае те же цели, что и параметр по умолчанию у функции: предоставлять некое умолчание. Например у шаблона std::vector второй параметр - это как раз параметр по умолчанию, который представляет собой аллокатор.
0
|
||
|
"C with Classes"
|
||
| 10.07.2020, 21:24 | ||
|
Добавлено через 31 секунду вот как раз когда нет имени, это интересный случай. Добавлено через 7 минут кажется въехаал, безымянный параметр шаблона нужен только для того что бы раскрыть шаблон enable_if<>, если не сработает SFINAE то он раскроется сделав тем самым второй безымянный параметр рабочим тем самым включит функцию на инстанцирование, но сам фиктивный параметр не нужен по этому у него нет имени. как то так?
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 10.07.2020, 21:27 | |||
|
Добавлено через 18 секунд
0
|
|||
|
"C with Classes"
|
|
| 10.07.2020, 21:28 | |
|
0
|
|
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
|||
| 10.07.2020, 21:49 | |||
std::remove_reference_t. Однако к ключевому слову typename, которое вы вынесли в заголовок вопроса это не имеет никакого отношения.Во-вторых, в книге по-видимому изобилуют опечатки. typename remove_reference_t<T> - так нельзя. Правильно либо просто remove_reference_t<T>, либо typename remove_reference<T>::type. И, как уже правильно заметил oleg-m1973, в примере с std::enable_if должно быть либо enable_if_t<is_array_v<T>>, либо typename enable_if<is_array_v<T>>::type.Такое впечатление, что кто-то на позднем этапе редактирования книги выкосил все ::type и заменил их на _t-версии соответствующих шаблонов, но забыл, что этим дело не ограничивается.Добавлено через 5 минут Это не так. Ваш справочник крив, кос и содержит ошибку на ошибке. Были ли эти ошибки внесены при переводе или наляпаны самим автором справочника - вопрос отдельный, но факт остается фактом.
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 10.07.2020, 21:56 | ||
|
Теперь буду уточнять, чтобы читали оригинал. PS. не видел русский перевод, поэтому не знал, что там такой бардак.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 10.07.2020, 22:04 | |
|
0
|
|
|
Вездепух
13207 / 6841 / 1823
Регистрация: 18.10.2014
Сообщений: 17,304
|
||
| 10.07.2020, 22:10 | ||
|
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 10.07.2020, 22:12 | |||
![]()
0
|
|||
|
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
|
|||||
| 10.07.2020, 22:13 [ТС] | |||||
|
DrOffset,DrOffset, да, в первом примере ошибка была сделана мной
0
|
|||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 10.07.2020, 22:20 | ||||
|
Если вы спиратили книгу, к чему лично я отношусь нейтрально, то просто спиратьте ее еще раз, в более качественном виде. Если эти косяки присутствуют в вашей электронной версии, то это однозначно какой-то утекший в сеть черновик. Выше вам уже ответили про ошибки:
0
|
||||
| 10.07.2020, 22:20 | |
|
Typename и Class
шаблоны и typename в частности Typename перед инстанцированием Template<typename T> vs auto Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|
|
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
|
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока
Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат
Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
|