Скажем, у меня есть некоторый шаблонный класс в зависимости от типа T
. T
может быть почти любым: int
, int*
, pair <int, int>
или struct lol
; это не может быть void
, ссылка или что-то еще cv-квалификационное. Для некоторой оптимизации мне нужно знать, могу ли я подклассом T
. Таким образом, мне нужен некоторый тип признаков is_subclassable
, определяемый как логическая комбинация основных признаков или с помощью некоторых трюков SFINAE.
В исходном примере int
и int*
не являются подклассами, а pair <int, int>
и struct lol
.
EDIT. Как показано ниже, объединения также не являются подклассами, а T
также может быть типом объединения.
Как написать тип признака, который мне нужен?