Я хотел бы знать, возможно ли в C ++ как-то обрабатывать следующие ситуации:
Ситуация 1) (Легко обрабатывается)
class BasicFacility { }
template <typename U1, typename U2> class Facility : public BasicFacility { }
Предположим теперь, что мы хотим получить какое-то утверждение во время компиляции и хотим проверить, моделирует ли произвольный тип typename T
Facility
.Это довольно просто:
(boost::is_base_of<BasicFacility, T>::type)
Ситуация 2) (???)
Теперь давайте предположим, что в той же ситуации мы простоесть наш класс шаблона:
template <typename U1, typename U2> class Facility { }
Очевидно, что мы не можем использовать одно и то же решение из ситуации один , потому что мы не можем написать statement<Facility, T>
(Facility
сам шаблон).
Итак, есть ли способ (возможно, грязный, включающий уродливые приведения, специфичные для выравнивания, НИЧЕГО, что может сработать) , чтобы проверить, действительно ли некоторые T
равны template type
без введения конкретных пустых (вспомогательных) базовых классов (потому что иногда вы просто не можете)?
Спасибо.