| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
7.10 Type Traits
The C++ front end implements syntactic extensions that allow compile-time determination of various characteristics of a type (or of a pair of types).
__has_nothrow_assign (type)If
typeis const qualified or is a reference type then the trait is false. Otherwise if__has_trivial_assign (type)is true then the trait is true, else iftypeis a cv class or union type with copy assignment operators that are known not to throw an exception then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__has_nothrow_copy (type)If
__has_trivial_copy (type)is true then the trait is true, else iftypeis a cv class or union type with copy constructors that are known not to throw an exception then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__has_nothrow_constructor (type)If
__has_trivial_constructor (type)is true then the trait is true, else iftypeis a cv class or union type (or array thereof) with a default constructor that is known not to throw an exception then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__has_trivial_assign (type)If
typeis const qualified or is a reference type then the trait is false. Otherwise if__is_pod (type)is true then the trait is true, else iftypeis a cv class or union type with a trivial copy assignment ([class.copy]) then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__has_trivial_copy (type)If
__is_pod (type)is true ortypeis a reference type then the trait is true, else iftypeis a cv class or union type with a trivial copy constructor ([class.copy]) then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__has_trivial_constructor (type)If
__is_pod (type)is true then the trait is true, else iftypeis a cv class or union type (or array thereof) with a trivial default constructor ([class.ctor]) then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__has_trivial_destructor (type)If
__is_pod (type)is true ortypeis a reference type then the trait is true, else iftypeis a cv class or union type (or array thereof) with a trivial destructor ([class.dtor]) then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__has_virtual_destructor (type)If
typeis a class type with a virtual destructor ([class.dtor]) then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__is_abstract (type)If
typeis an abstract class ([class.abstract]) then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__is_base_of (base_type, derived_type)If
base_typeis a base class ofderived_type([class.derived]) then the trait is true, otherwise it is false. Top-level cv qualifications ofbase_typeandderived_typeare ignored. For the purposes of this trait, a class type is considered is own base. Requires: if__is_class (base_type)and__is_class (derived_type)are true andbase_typeandderived_typeare not the same type (disregarding cv-qualifiers),derived_typeshall be a complete type. Diagnostic is produced if this requirement is not met.__is_class (type)If
typeis a cv class type, and not a union type ([basic.compound]) the trait is true, else it is false.__is_empty (type)If
__is_class (type)is false then the trait is false. Otherwisetypeis considered empty if and only if:typehas no non-static data members, or all non-static data members, if any, are bit-fields of length 0, andtypehas no virtual members, andtypehas no virtual base classes, andtypehas no base classesbase_typefor which__is_empty (base_type)is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__is_enum (type)If
typeis a cv enumeration type ([basic.compound]) the trait is true, else it is false.__is_literal_type (type)If
typeis a literal type ([basic.types]) the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__is_pod (type)If
typeis a cv POD type ([basic.types]) then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__is_polymorphic (type)If
typeis a polymorphic class ([class.virtual]) then the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__is_standard_layout (type)If
typeis a standard-layout type ([basic.types]) the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__is_trivial (type)If
typeis a trivial type ([basic.types]) the trait is true, else it is false. Requires:typeshall be a complete type, (possibly cv-qualified)void, or an array of unknown bound.__is_union (type)If
typeis a cv union type ([basic.compound]) the trait is true, else it is false.__underlying_type (type)The underlying type of
type. Requires:typeshall be an enumeration type ([dcl.enum]).
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on October 19, 2013 using texi2html 5.0.
