|
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
|
||||||
Шаблоны template с ограниченными параметрами19.09.2012, 12:45. Показов 4945. Ответов 41
Метки нет (Все метки)
Привет всем. У меня короткий вопрос.
например есть такой код:
То есть, параметр шаблона T мог принимать только определенные мною значения (например MyClass1, int и всё, другие нельзя).
0
|
||||||
| 19.09.2012, 12:45 | |
|
Ответы с готовыми решениями:
41
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». Как вы применяете шаблоны template в C++?
|
| 19.09.2012, 14:46 | |
|
0
|
|
| 19.09.2012, 14:48 | ||
|
Не по теме:
2
|
||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 19.09.2012, 14:48 | |
|
FireNovel, грамотное решение тебе предложил коллега ForEveR. О списках типов и static_assert хорошо написано у Александреску в его "Современном проектировании на C++" (книга существует в электронном виде в Сети, гугл в помощь).
1
|
|
|
|
|||||||||||||||||
| 19.09.2012, 14:48 | |||||||||||||||||
|
Так! Меня начинает напрягать глупость некоторых, вот код который позволяет добавлять только int и double что с ним делать пусть ТС решает, единственное ему вместо
и под катом Отработка
PS:Кто не умеет писать просто - тот не умеет писать вооюще, Удачи!
0
|
|||||||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 19.09.2012, 14:50 | |
|
-=ЮрА=-, И зачем нам проверка в runtime?)
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
| 19.09.2012, 14:50 | ||
|
Юра, это динамическая проверка. А надо именно статически, в этом и вся соль.
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 19.09.2012, 14:53 | |
|
~OhMyGodSoLong~, Так-то да. Но будет одно имя для типа. Специализация столь же тяжела, сколь и описание типов с разными именами (по кол-ву кода).
0
|
|
|
|
||
| 19.09.2012, 14:56 | ||
|
0
|
||
|
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
|
|||||||
| 19.09.2012, 14:58 | |||||||
Решение, конечно, кривое, но уже не так плохо, как дублирование целого класса.
0
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 19.09.2012, 14:59 | |
|
-=ЮрА=-, Использую стороннюю библиотеку (буст, локи).) Можно и самому написать, но это лень.
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
| 19.09.2012, 15:00 | ||
|
0
|
||
| 19.09.2012, 15:02 | |
|
Не по теме: ~OhMyGodSoLong~, ну возьми напиши автор темы тебе будет благодарен. Пока решения кроме своего из поста 24 я так и не увидел:)Меньше слов, больше действий;)
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|||||||
| 19.09.2012, 15:11 | |||||||
Штуку type_equals<T1, T2>, которая true для равных и false для различных типов уж сами напишете.
0
|
|||||||
|
|
|
| 19.09.2012, 15:17 | |
|
Не по теме: ~OhMyGodSoLong~, ты уж прости "меня тупого", но каким гаком это всё относится к коду автора темы?Я пока ничего из твоего кода не уловил... Добавлено через 1 минуту Не по теме: Ты написал - "делается в 3 строки". Сейчас уже вижу 20-ть и к решению задания даже ещё не подобрались, одну штуку написать в ней другую, как-то не отвечаешь за свои слова...
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 19.09.2012, 15:21 | |
|
-=ЮрА=-, У него static_assert написан именно в 3 строки. Остальное тесты.
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||||||
| 19.09.2012, 15:23 | ||||||
Сообщение было отмечено как решение
Решение
Я обещал технически работающий static_assert в три строки — я его показал.
3
|
||||||
|
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
|
|
| 19.09.2012, 15:25 | |
|
0
|
|
|
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
|
||||||
| 19.09.2012, 15:39 [ТС] | ||||||
|
Я смотрю тут такая дискуссия... Мне прям стыдно влезать с вопросом
![]() Может я некорректно поставил предыдущий вопрос, поэтому перефразирую. Необходимо наличие определенного метода в допустимых типах например допустимые типы: Type1, Type2, Type3 ... (сразу уточню, что типы не стандартные) Они должны содержать метод например Calc(). пока, что реализовал как писал ранее(с template). и все работает. Но хотелось защитить от недопустимых типов, так как планирую расширять количество классов Type. Может быть можно с помощью наследования решить для Type Взять родителем абстрактный класс Base, но пока не придумал как.
0
|
||||||
|
2395 / 1924 / 763
Регистрация: 27.07.2012
Сообщений: 5,569
|
||
| 19.09.2012, 15:45 | ||
|
0
|
||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
| 19.09.2012, 15:45 | ||||||
|
как уже писали, при наличии статик ассерта и другой оснастки, написать такое достаточно просто.
за деталями обнаружения метода отсылаю к саттеру. у него есть главы, посвященные этому.
0
|
||||||
| 19.09.2012, 15:45 | |
|
Помогаю со студенческими работами здесь
40
подскажите template<class> (Шаблоны и указатели) Что за пустые шаблоны template <> struct/inline? Шаблоны: ошибки: requires template argument list или undeclared identifier Genfit() с ограниченными параметрами Template Toolkit шаблоны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|