value_traits.qbk

来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 195 行

QBK
195
字号
[/   Copyright 2007 John Maddock.  Distributed under the Boost Software License, Version 1.0.  (See accompanying file LICENSE_1_0.txt or copy at  http://www.boost.org/LICENSE_1_0.txt).][section:value_traits Type Traits that Describe the Properties of a Type]These traits are all /value traits/, which is to say the traits classes allinherit from __integral_constant, and are used to access some numericalproperty of a type.  Often this is a simple true or false Boolean value, but in a few cases may be some other integer value (for example when dealingwith type alignments, or array bounds: see `__alignment_of`, `__rank` and `__extent`).[section:primary Categorizing a Type]These traits identify what "kind" of type some type `T` is.  These are split intotwo groups: primary traits which are all mutually exclusive, and composite traitsthat are compositions of one or more primary traits.For any given type, exactly one primary type trait will inherit from__true_type, and all the others will inherit from __false_type, in otherwords these traits are mutually exclusive. This means that `__is_integral<T>::value` and `__is_floating_point<T>::value` will only ever be true for built-in types; if you want to check for a user-defined class type that behaves "as if" it is an integral or floating point type, then use the `std::numeric_limits template` instead.[*Synopsis:]   template <class T>   struct __is_array;        template <class T>   struct __is_class;      template <class T>   struct __is_complex;        template <class T>   struct __is_enum;        template <class T>   struct __is_floating_point;        template <class T>   struct __is_function;   template <class T>   struct __is_integral;        template <class T>   struct __is_member_function_pointer;        template <class T>   struct __is_member_object_pointer;        template <class T>   struct __is_pointer;        template <class T>   struct __is_reference;        template <class T>   struct __is_union;        template <class T>   struct __is_void;     The following traits are made up of the union of one or more typecategorizations. A type may belong to more than one of these categories, in addition to one of the primary categories.   template <class T>   struct __is_arithmetic;      template <class T>   struct __is_compound;      template <class T>   struct __is_fundamental;      template <class T>   struct __is_member_pointer;      template <class T>   struct __is_object;      template <class T>   struct __is_scalar;   [endsect][section:properties General Type Properties]The following templates describe the general properties of a type.[*Synopsis:]   template <class T>   struct __alignment_of;   template <class T>   struct __has_nothrow_assign;   template <class T>   struct __has_nothrow_constructor;   template <class T>   struct __has_nothrow_default_constructor;   template <class T>   struct __has_nothrow_copy;   template <class T>   struct __has_nothrow_copy_constructor;   template <class T>   struct __has_trivial_assign;   template <class T>   struct __has_trivial_constructor;   template <class T>   struct __has_trivial_default_constructor;   template <class T>   struct __has_trivial_copy;   template <class T>   struct __has_trivial_copy_constructor;   template <class T>   struct __has_trivial_destructor;   template <class T>   struct __has_virtual_destructor;   template <class T>   struct __is_abstract;   template <class T>   struct __is_const;   template <class T>   struct __is_empty;   template <class T>   struct __is_stateless;   template <class T>   struct __is_pod;   template <class T>   struct __is_polymorphic;      template <class T>   struct __is_signed;      template <class T>   struct __is_unsigned;   template <class T>   struct __is_volatile;   template <class T, std::size_t N = 0>   struct __extent;   template <class T>   struct __rank;[endsect][section:relate Relationships Between Two Types]These templates determine the whether there is a relationship between two types:[*Synopsis:]   template <class Base, class Derived>   struct __is_base_of;   template <class From, class To>   struct __is_convertible;   template <class T, class U>   struct __is_same;   [endsect][endsect]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?