is_class
является членом библиотеки Boost.Type_Traits. Реализация, вероятно, похожа на то, что у вас уже есть. Вы можете использовать в сочетании с enable_if
для создания функции, если это необходимо:
template <class T>
typename enable_if_c<boost::is_class<T>::value>::type
foo() { }
Или эквивалент:
template <class T>
typename enable_if<boost::is_class<T>>::type
foo() { }
Функция foo
генерируется, только если тип T
относится к типу класса.
Возвращаемое значение для функции, если оно сгенерировано, является вторым параметром (опущен) для шаблона enable_if
(по умолчанию void
).