...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
template <class T>
struct is_abstract : public true_type-or-false_type
{};
Inherits: If T is a (possibly cv-qualified) abstract type then inherits from true_type, otherwise inherits from false_type.
C++ Standard Reference: 10.3.
Header: #include
<boost/type_traits/is_abstract.hpp>
or #include <boost/type_traits.hpp>
Compiler Compatibility: The compiler must support DR337 (as of April 2005: GCC 3.4, VC++ 7.1 (and later), Intel C++ 7 (and later), and Comeau 4.3.2). Otherwise behaves the same as is_polymorphic; this is the "safe fallback position" for which polymorphic types are always regarded as potentially abstract. The macro BOOST_NO_IS_ABSTRACT is used to signify that the implementation is buggy, users should check for this in their own code if the "safe fallback" is not suitable for their particular use-case.
Examples:
Given:
class abc{ virtual ~abc() = 0; };
is_abstract<abc>
inherits fromtrue_type
.
is_abstract<abc>::type
is the typetrue_type
.
is_abstract<abc const>::value
is an integral constant expression that evaluates to true.
is_abstract<T>::value_type
is the typebool
.