Добавить тип по-умолчанию?
Не совсем понял мысль
У Вас шаблонный класс, которому Вы хотите не предоставлять тип аргументом. Для этого классу требуется предоставить аргумент-тип по-умолчанию. В частности, пример окажется корректным при объявлении условного вида template < typename = void > class Liza::Converter;
Возможно ли сделать, это как специализация по-умолчанию?
Это в определенном смысле и будет специализацией по-умолчанию, если я Вас правильно понимаю. Если у Вас там пак (typename...) - так делать нельзя. На предоставление явных специализаций это не повлияет.
У меня есть 2 енама( будет больше ). Есть класс Конвертер, который будет принимать енам и выкидывать его код. Дальше по пайплайну у меня на основе этого кода вызывать нужную операцию в цепи. На этапе конвертера я не хочу в коде явно писать тип, который принимает этот конвертер-шаблонный, так как очевидно, что там может быть множество енамов
Чуть конвенционнее, пожалуйста: под "кодом энама" что подразумевается? В примере выше key - переменная какого-то scoped-enum'а, которых может быть произвольное количество с одинаковым underlying-type? Вы хотите, таким образом, выбирать специализацию шаблонного класса на основании определения этой самой специализации. Застряли в желании универсализации ООП-парадигмы, я так понимаю? =) Сделайте функцию свободной или упраздните шаблонность класса (все нужное осуществляйте внутри ее тела).
Код - это константа внутри енама ( не правильно высказался 😀 ) Интересует именно момент, когда у меня множество scoped enum и я хочу на основе любого из них выстраивать запрос. Также не хочется писать по множеству разных интерфейсов для каждого из скопедов
А что Вам мешает иметь интерфейс вида template < OneOf</* scoped-enums */> E > auto func ( E e ); ? Приведение возможно и к разным: static_cast<std::underlying_type_t<E>>(e).
Только у меня и так такой интерфейс =) Банально он не хочет во время компайлтайма выполнять функцию, так как не знает походу тип =)
Так а классу-то шаблонность зачем (и зачем он там вообще)?
Обсуждают сегодня