|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|
Специализация шаблона функции03.12.2017, 16:07. Показов 4733. Ответов 14
Метки нет (Все метки)
Допустим у нас имеется шаблон функции такой, в угловых скобках которого содержатся как типовые параметры (с ударением на букве И), так и обычные параметры значения.
Возможна ли вообще написать специализацию для данного шаблона. В принципе вопрос можно сформулировать и так: Не является ли наличие параметров значения, указываемых в угловых скобках этого шаблона функции, препятствием для создания специализации этого шаблона?
0
|
|
| 03.12.2017, 16:07 | |
|
Ответы с готовыми решениями:
14
Специализация шаблона функции Частичная специализация шаблона функции Почему не создается специализация шаблона функции |
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 03.12.2017, 16:11 | |
|
Как бы специализация шаблона - это и есть задание иной его реализации для конкретных типов. http://ci-plus-plus-snachala.ru/?p=3937
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 03.12.2017, 16:12 | |
|
0
|
|
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
||||||||||||
| 03.12.2017, 17:05 [ТС] | ||||||||||||
|
Добавлено через 6 минут Пример вымученный. Вот шаблон:
Вот что выдает компилятор: 1>d:\myprojects\c++\deitla1\deitla1\deit la1.cpp(47): error C2146: синтаксическая ошибка: отсутствие ">" перед идентификатором "n" 1>d:\myprojects\c++\deitla1\deitla1\deit la1.cpp(48): error C2912: явная специализация; "int compare<int,int*>(int *,int *)" не является специализацией функции-шаблона 1>d:\myprojects\c++\deitla1\deitla1\deit la1.cpp(49): error C2065: n: необъявленный идентификатор Компилятор: MS Visual C++ 2017 P.S. Когда убираю все, что связано с целочисленным параметром n из шаблона, специализации и определений, все работает прекрасно.
0
|
||||||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 03.12.2017, 17:28 | ||
|
Потому что шаблоны пишутся для типов, а не для указателей. Если хочешь использовать указатели - делай для них тип-обёртку
Добавлено через 46 секунд Либо же в самом шаблоне нужно явно указывать указатели. Добавлено через 11 минут А вот классы можно делать с частичной специализацией.
0
|
||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|||
| 03.12.2017, 17:31 [ТС] | |||
|
А что указатель уже перестал быть типом? Добавлено через 1 минуту Добавлено через 1 минуту Что значит указывать n явно? Если n убрать оттуда, то это уже будет не специализация, а перегрузка шаблона, или я что то не догоняю.
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 03.12.2017, 17:34 | |
|
Хотя... Насчёт указателей был неправ, извиняюсь.
0
|
|
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|
| 03.12.2017, 17:37 [ТС] | |
|
Ну напишите хотя бы одну специализацию для данного шаблона.
Я не прошу тело, напишите хотя бы ЗАГОЛОВОК. Добавлено через 2 минуты Или если это невозможно, то хотелось бы чтобы знающие люди написали просто, примерно следующее: СПЕЦИАЛИЗАЦИЯ ШАБЛОНА ФУНКЦИИ, СОДЕРЖАЩЕГО ПОМИМО ТИПОВЫХ ПАРАМЕТРОВ ШАБЛОНА (С УДАРЕНИЕМ НА БУКВЕ И) ЕЩЁ И ПАРАМЕТРЫ ЗНАЧЕНИЙ НЕВОЗМОЖНА. Так это или нет?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 03.12.2017, 17:38 | |||||||
|
например:
0
|
|||||||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|
| 03.12.2017, 17:49 [ТС] | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 03.12.2017, 17:52 | ||
|
нет нужды в полной специализации.
0
|
||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
||
| 03.12.2017, 17:57 [ТС] | ||
|
Если Вы знаете, что Ваша функция будет всегда вызываться с параметром 10, какой же это тогда параметр? Добавлено через 1 минуту Действительно я нашел в сети такое утверждение, что ЧАСТИЧНАЯ СПЕЦИАЛИЗАЦИЯ ФУНКЦИЙ В ОТЛИЧИЕ ОТ КЛАССОВ ЗАПРЕЩЕНА. Но, хотелось уточнить следующее. Дело в том, что источники, в которых содержатся такое утверждение они 10-летней давности. Может быть что-то поменялось за это время?
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||||||||
| 03.12.2017, 18:03 | ||||||||||||
Добавлено через 5 минут Но зато можно определить шаблон с другим числом параметров, т.е. это не будет специализацией:
0
|
||||||||||||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
||
| 03.12.2017, 18:05 [ТС] | ||
|
Интересует только возможность написать вот так:
Ну а если подытожить, то все это можно описать примерно так: Каждая специализация шаблона должны быть согласована с исходным шаблоном по формату того, что указывается в угловых скобках. Так, например, если в исходном шаблоне, внутри угловых скобок определяется один типовый параметр, то тогда и внутри угловых скобок должен содержаться ровно один тип, а не два и не три. Кроме того, следует помнить о том, что на настоящий момент частичная специализация шаблона функции не допускается. Это означает, что при специализации шаблона функции в определении этой специализации должны указываться значения для всех параметров, которые указаны между угловыми скобками в определении шаблона. Если такой параметр является параметром значения, то для него следует указать конкретное числовое значение. Поправьте, плиз, если ошибаюсь.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 03.12.2017, 19:05 | ||||||||
|
когда необходимо реализовать какую то уникальную логику для конкретного частной случая. в подобных ситуациях нет никаких "вообще". есть конкретные частные случаи под ключ задачи. пример:
и частный случай: массив с количеством элементов равным ноль.
1
|
||||||||
| 03.12.2017, 19:05 | |
|
Помогаю со студенческими работами здесь
15
Каким стандартом введена частичная специализация шаблона функции? Явная специализация шаблона функции - ошибка на этапе компиляции Error C2912: явная специализация не является специализацией функции-шаблона C2912: специализация функции не является специализацией какого-то конкретного шаблона (в чём причина ошибки?) специализация шаблона Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|