template <class T>
struct is_abstract : public true_type-or-false_type
{};
Наследования: Если T является (возможно кв-квалифицированным) абстрактным типом, то наследует от True_type, иначе наследует от false_type.
C++ Standard Reference: 10.3.
Здитель: #include <boost/type_traits/is_abstract.hpp>>>>>>>
Совместимость компилятора: Компилятор должен поддерживать DR337 (по состоянию на апрель 2005 года: GCC 3.4, VC++ 7.1 (и позднее), Intel C++ 7 (и позднее) и Comeau 4.3.2). В противном случае он ведет себя так же, как is_polymorphic; это «безопасное обратное положение», для которого полиморфные типы всегда считаются потенциально абстрактными. BOOST_NO_IS_ABSTRACT используется для обозначения того, что реализация является багги, пользователи должны проверить это в своем собственном коде, если «безопасный отказ» не подходит для их конкретного случая использования.
Примеры:
Учитывая: class abc{ virtual ~abc() = 0; };
is_abstract<abc>::type
является типом true_type
.
is_abstract<abc const>:: value
является неотъемлемым постоянным выражением, которое оценивает до true.
is_abstract<T>:: value_type
- это тип bool
.