У меня есть пустой интерфейс IData. И мне требуется только в двух случаях проверить тип наследуемого класса используя dynamic_cast чтобы автоматически выбрать шаблон данных. В остальных случаях шаблон устанавливается в ручную.
Возможно вы скажите что можно статически установишь через шаблон и там через if constexpr проверить тип. Так у меня и было. Но с таким подходит я не могу использывать привязку данных. Поэтому надо было что-то делать и пока ничего лучше чем так я не придумал. Это оптимальный подход?
Dyikot , коротко. Нет, вообще не оптимальный. Ты время трансляции и время исполнения перепутал между собой. Из-за этого тебе приходится делать крайне странные вещи. В вопросе у тебя ноль конкретики, но уже имеющееся отдаленное описание выглядит как очень плохой дизайн.
В тот самый момент, когда dynamic_cast соприкасается с шаблонным кодом, тебе нужно понять что плохо написано просто всё.
А чтобы я написал ответ, тебе нужно сопроводить вопрос как можно более полным описанием работы своего кода с примерами же своего кода. И главную часть в этом описании должны занимать ответы на вопрос "Зачем это здесь?" и "Почему нельзя иначе?".
Евгений Шатунов, Ну я как раз написал чтобы не использывать шаблоны, я использую dynamic_cast. И ничего я не перепутал. Возможно я запутал применя слово "шаблон" и имея в виду шаблон данных(DataTemplate) и шаблон языка(template<>) Вот пример: