|
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
|
||||||
typename в шаблонах09.07.2020, 23:39. Показов 4864. Ответов 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
|
|
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||
| 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
|
|
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|