![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| xbarmaglot |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
Можно ли так специализировать шаблон?
*.h
*.cpp
|
||||
|
|||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
E::A это не имя типа, а int
поэтому
однако конструкция
выглядит не очень. например можно использовать map вы чего в итоге добиваетесь, может найдется более изящное решение? Добавлено через 2 минуты и 22 секунды ЗЫ: специализацию вам надо описать раньше использования (или принудительно инстанцировать) |
||||
|
|||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
xbarmaglot, скорее всего baldina прав и тебе нужно что-то другое. Во всяком случае, в твоём абсолютно непонятно, чего ты хочешь добиться. Но, включив свои телепатические способности, могу предложить вот это:
Для этого кода требуется компилятор с поддержкой C++ 14! https://ideone.com/JdsPf7 -------------------- ![]() |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| xbarmaglot |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
Ну если более подробно объяснить, то есть типы пакетов
Далее приходит пакет на разборку и по сути все сводится к
То есть вызов функций с одинаковым прототипом, которые нужно описать N раз - просто не вижу смысл захламлять описание... |
||||
|
|||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
xbarmaglot, специализировать можно так
Добавлено @ 11:18 ну и вызывать их так:
Добавлено через 11 минут и 18 секунд http://ideone.com/lPHYad Это сообщение отредактировал(а) volatile - 10.9.2015, 11:18 |
||||
|
|||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
Я думал об этом, но не хотел типы тащить в описание класса, поэтому и думал, что можно <typename T>
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
В данном случае параметром шаблона является не тип, а перечислимое значение.
так что typename здесь не нужен. |
|||
|
||||
| xbarmaglot |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
понятно. спасибо.
Еще вопрос почему там можно
а так требует явного приведения типа
|
||||
|
|||||
| volatile |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Старый enum - это практически int, и компиллятор неявно приводил к инт, и обратно, не спрашивая.
Это уже полноценный тип, и компилятор неявно приводить к нему и из него ничего не будет. Как собственно и должно быть. Добавлено через 1 минуту и 39 секунд http://www.cplusplus.com/forum/general/147341/ |
||||||||
|
|||||||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
спс
|
|||
|
||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
volatile, а если так
то есть если я явно указываю тип Int. Тоже не канает? |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |