template <class T>
struct is_class : public true_type-or-false_type
{};
Наследования: Если T является (возможно, кв-квалифицированным) классом (а не профсоюзным типом), то наследует от True_type, иначе наследует от false_type.
C++ Standard Reference: 3.9.2 и 9.2.
Здесь: #include <boost/type_traits/is_class.hpp>
или ininclude <boost/39>>>>>>>>>>>>>>>>>>
Совместимость пользователя: Эта черта работает правильно почти для всех нынешних компиляторов (по состоянию на июнь 2015 года), с меньшинством более старых компиляторов не правильно обнаруживая все угловые случаи. Вы можете проверить макро BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
, который определяется до 1, когда класс работает правильно во всех случаях.
Примеры:
Учитывая: class MyClass;
затем:
is_class<MyClass const>::type
является типом true_type
.
is_class<MyClass>:: value
является неотъемлемым постоянным выражением, которое оценивает до Правда.
is_class<MyClass&>:: value
является неотъемлемым постоянным выражением, которое оценивает до false.
is_class<MyClass*>:: value
является неотъемлемым постоянным выражением, которое оценивает до false.
is_class<T>:: value_type
- это тип bool
.