diff --git a/doc/html/boost_typetraits/category/transform.html b/doc/html/boost_typetraits/category/transform.html index 5ebf62c..7437ec2 100644 --- a/doc/html/boost_typetraits/category/transform.html +++ b/doc/html/boost_typetraits/category/transform.html @@ -63,6 +63,9 @@ template <class... T> struct common_type; +template <class T, class U> +struct copy_cv; + template <class T> struct decay; @@ -101,6 +104,9 @@ template <class T> struct remove_volatile; + +template <class T> +struct type_identity; diff --git a/doc/html/boost_typetraits/category/value_traits/properties.html b/doc/html/boost_typetraits/category/value_traits/properties.html index bccb201..6e527d1 100644 --- a/doc/html/boost_typetraits/category/value_traits/properties.html +++ b/doc/html/boost_typetraits/category/value_traits/properties.html @@ -54,6 +54,9 @@ template<classT>structhas_nothrow_copy_constructor; +template<classT> +structhas_nothrow_destructor; + template<classT>structhas_trivial_assign; @@ -78,12 +81,33 @@ template<classT>structis_abstract; +template<classT,classU> +structis_assignable; + +template<classT> +structis_copy_constructible; + +template<classT> +structis_copy_assignable; + +template<classT,class...Args> +structis_constructible; + +template<classT> +structis_default_constructible; + +template<classT> +structis_destructible; + template<classT>structis_const;template<classT>structis_empty; +template<classT> +structis_final; + template<classT>structis_stateless; diff --git a/doc/html/boost_typetraits/reference.html b/doc/html/boost_typetraits/reference.html index 4ccfab4..f1cfab2 100644 --- a/doc/html/boost_typetraits/reference.html +++ b/doc/html/boost_typetraits/reference.html @@ -38,7 +38,9 @@
alignment_of
conditional
common_type
+
copy_cv
decay
+
declval
extent
floating_point_promotion
function_traits
@@ -74,6 +76,7 @@
has_nothrow_assign
has_nothrow_constructor
has_nothrow_copy
+
has_nothrow_destructor
has_nothrow_copy_constructor
has_nothrow_default_constructor
has_plus
@@ -100,14 +103,18 @@
is_abstract
is_arithmetic
is_array
+
is_assignable
is_base_of
is_class
is_complex
is_compound
is_const
+
is_constructible
is_convertible
-
is_copy_constructible
is_copy_assignable
+
is_copy_constructible
+
is_default_constructible
+
is_destructible
is_empty
is_enum
is_final
@@ -147,6 +154,7 @@
remove_pointer
remove_reference
remove_volatile
+
type_identity
type_with_alignment
diff --git a/doc/html/boost_typetraits/reference/common_type.html b/doc/html/boost_typetraits/reference/common_type.html index 602e8a1..6c78990 100644 --- a/doc/html/boost_typetraits/reference/common_type.html +++ b/doc/html/boost_typetraits/reference/common_type.html @@ -7,7 +7,7 @@ - +
@@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -32,115 +32,92 @@ or #include <boost/type_traits.hpp>

namespace boost {
-  template <class ...T>  struct common_type;
+  template <class... T> struct common_type;
 }
 

- common_type - is a traits class used to deduce a type common to a several types, useful - as the return type of functions operating on multiple input types such as - in mixed-mode arithmetic.. + common_type is a traits class + used to deduce a type common to a several types, useful as the return type + of functions operating on multiple input types such as in mixed-mode arithmetic..

The nested typedef ::type could be defined as follows:

-
template <class ...T>
+
template <class... T>
 struct common_type;
 
-template <class T, class U, class ...V>
-struct common_type<T,U,...V> {
-    typedef typename common_type<typename common_type<T, U>::type, V...>::type type;
+template <class T, class U, class... V>
+struct common_type<T, U, V...> {
+    typedef typename common_type<typename common_type<T, U>::type, V...>::type type;
+};
+
+template <>
+struct common_type<> {
 };
 
 template <class T>
 struct common_type<T> {
-    typedef T type;
+    typedef typename decay<T>::type type;
 };
 
 template <class T, class U>
 struct common_type<T, U> {
-    typedef decltype(declval<bool>() ? declval<T>() : declval<U>()) type;
+    typedef typename decay<
+        decltype( declval<bool>()?
+            declval<typename decay<T>::type>():
+            declval<typename decay<U>::type>() )
+    >::type type;
 };
 

All parameter types must be complete. This trait is permitted to be specialized by a user if at least one template parameter is a user-defined type. Note: Such specializations are required when only - explicit conversions are desired among the common_type + explicit conversions are desired among the common_type arguments.

Note that when the compiler does not support variadic templates (and the - macro BOOST_NO_VARIADIC_TEMPLATES is defined) then the maximum number of - template arguments is 3. + macro BOOST_NO_CXX11_VARIADIC_TEMPLATES + is defined) then the maximum number of template arguments is 9.

- Configuration - macros -
-

- When the compiler does not support static assertions then the user can select - the way static assertions are reported. Define -

-
    -
  • - BOOST_COMMON_TYPE_USES_STATIC_ASSERT: define it if you want to use Boost.StaticAssert -
  • -
  • - BOOST_COMMON_TYPE_USES_MPL_ASSERT: define it if you want to use Boost.MPL - static assertions -
  • -
-

- The default behavior is to use mpl assertions in this case, but setting BOOST_COMMON_TYPE_USES_STATIC_ASSERT - may reduce compile times and header dependencies somewhat. -

-

- Depending on the static assertion used you will have an hint of the failing - assertion either through the symbol or through the text. -

-

- When possible common_type is implemented using decltype. - Otherwise when BOOST_COMMON_TYPE_DONT_USE_TYPEOF is not defined it uses Boost.TypeOf. -

-
- Tutorial

- In a nutshell, common_type + In a nutshell, common_type is a trait that takes 1 or more types, and returns a type which all of the types will convert to. The default definition demands this conversion be implicit. However the trait can be specialized for user-defined types which want to limit their inter-type conversions to explicit, and yet still want - to interoperate with the common_type + to interoperate with the common_type facility.

Example:

template <class T, class U>
-complex<typename common_type<T, U>::type>
+complex<typename common_type<T, U>::type>
 operator+(complex<T>, complex<U>);
 

In the above example, "mixed-mode" complex arithmetic is allowed. - The return type is described by common_type. + The return type is described by common_type. For example the resulting type of adding a complex<float> and complex<double> might be a complex<double>.

Here is how someone might produce a variadic comparison function:

template <class ...T>
-typename common_type<T...>::type
+typename common_type<T...>::type
 min(T... t);
 

This is a very useful and broadly applicable utility.

- + How to get the common type of types with explicit conversions?
@@ -148,23 +125,23 @@ Another choice for the author of the preceding operator could be

template <class T, class U>
-typename common_type<complex<T>, complex<U> >::type
+typename common_type<complex<T>, complex<U> >::type
 operator+(complex<T>, complex<U>);
 

- As the default definition of common_type + As the default definition of common_type demands the conversion be implicit, we need to specialize the trait for complex types as follows.

template <class T, class U>
-struct common_type<complex<T>, complex<U> > {
-    typedef complex< common_type<T, U> > type;
+struct common_type<complex<T>, complex<U> > {
+    typedef complex< common_type<T, U> > type;
 };
 
- - How - important is the order of the common_type<> template arguments? + + How + important is the order of the common_type<> template arguments?

The order of the template parameters is important. @@ -242,9 +219,10 @@ A>.

- - Can - the common_type of two types be a third type? + + Can + the common_type of two types + be a third type?

Given the preceding example, one might expect common_type<A,B>::type to be C @@ -269,9 +247,10 @@ B>.

- - How - common_type behaves with pointers? + + How + does common_type behave with + pointers?

Consider @@ -305,26 +284,32 @@ Of course the user can always make this specialization.

- - Can - you explain the pros/cons of common_type against Boost.Typeof? + + Can + you explain the pros/cons of common_type + against Boost.Typeof?

- Even if they appear to be close, common_type + Even if they appear to be close, common_type and typeof have different purposes. You use typeof - to get the type of an expression, while you use common_type + to get the type of an expression, while you use common_type to set explicitly the type returned of a template function. Both are complementary, - and indeed common_type - is equivalent to decltype(declval<bool>() ? declval<T>() - : declval<U>()) + and indeed common_type is + approximately equivalent to decltype(declval<bool>() + ? declval<T>() + : declval<U>()).

- common_type - is also similar to promote_args<class ...T> in boost/math/tools/promotion.hpp, - though it is not exactly the same as promote_args either. common_type<T1, - T2>::type simply represents the result of some operation on T1 and T2, - and defaults to the type obtained by putting T1 and T2 into a conditional + common_type is also similar + to promote_args<class ...T> in + boost/math/tools/promotion.hpp, though + it is not exactly the same as promote_args + either. common_type<T1, T2>::type + simply represents the result of some operation on T1 + and T2, and defaults to the + type obtained by putting T1 + and T2 into a conditional statement.

@@ -346,7 +331,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/decay.html b/doc/html/boost_typetraits/reference/decay.html index 4e77ade..fbbe632 100644 --- a/doc/html/boost_typetraits/reference/decay.html +++ b/doc/html/boost_typetraits/reference/decay.html @@ -6,8 +6,8 @@ - - + + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -48,7 +48,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.17. Examples

+

Table 1.18. Examples

@@ -149,7 +149,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/extent.html b/doc/html/boost_typetraits/reference/extent.html index 1204e3f..97f4600 100644 --- a/doc/html/boost_typetraits/reference/extent.html +++ b/doc/html/boost_typetraits/reference/extent.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext

@@ -107,7 +107,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/floating_point_promotion.html b/doc/html/boost_typetraits/reference/floating_point_promotion.html index 257dab9..afab9d8 100644 --- a/doc/html/boost_typetraits/reference/floating_point_promotion.html +++ b/doc/html/boost_typetraits/reference/floating_point_promotion.html @@ -48,7 +48,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.18. Examples

+

Table 1.19. Examples

diff --git a/doc/html/boost_typetraits/reference/function_traits.html b/doc/html/boost_typetraits/reference/function_traits.html index 68084ac..77ea0a9 100644 --- a/doc/html/boost_typetraits/reference/function_traits.html +++ b/doc/html/boost_typetraits/reference/function_traits.html @@ -59,7 +59,7 @@

-

Table 1.19. Function Traits Members

+

Table 1.20. Function Traits Members

@@ -122,7 +122,7 @@

-

Table 1.20. Examples

+

Table 1.21. Examples

diff --git a/doc/html/boost_typetraits/reference/has_nothrow_assign.html b/doc/html/boost_typetraits/reference/has_nothrow_assign.html index f0c4494..c01d51f 100644 --- a/doc/html/boost_typetraits/reference/has_nothrow_assign.html +++ b/doc/html/boost_typetraits/reference/has_nothrow_assign.html @@ -37,9 +37,15 @@ type.

- Compiler Compatibility: Either a compiler - intrinsic (for example this is provided by Visual C++ 8 or later, plus all - GCC versions in C++11 mode), alternatively support for the C++11 noexcept feature. + Compiler Compatibility: Either requires + C++11 noexcept and decltype or else some (unspecified) help from + the compiler. Currently (June 2015) compilers more recent than Visual C++ + 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear and all recent GCC versions + have the necessary compiler intrinsics + to ensure that this trait "just works". You may test to see if + the necessary support is available by checking to see if defined(BOOST_HAS_NOTHROW_CONSTRUCTOR) || (!defined(BOOST_NO_CXX11_DECLTYPE) + && !defined(BOOST_NO_CXX11_NOEXCEPT)) + is true.

Header: #include diff --git a/doc/html/boost_typetraits/reference/has_nothrow_constructor.html b/doc/html/boost_typetraits/reference/has_nothrow_constructor.html index 5080c1e..fb55aca 100644 --- a/doc/html/boost_typetraits/reference/has_nothrow_constructor.html +++ b/doc/html/boost_typetraits/reference/has_nothrow_constructor.html @@ -43,20 +43,15 @@ These two traits are synonyms for each other.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (unspecified) help from the compiler, has_nothrow_constructor - will never report that a class or struct has a non-throwing default-constructor; - this is always safe, if possibly sub-optimal. Currently (May 2011) compilers - more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear + Compiler Compatibility: Either requires + C++11 noexcept and decltype or else some (unspecified) help from + the compiler. Currently (June 2015) compilers more recent than Visual C++ + 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear and all recent GCC versions have the necessary compiler intrinsics - to ensure that this trait "just works". You may also test to see - if the necessary intrinsics - are available by checking to see if the macro BOOST_HAS_NOTHROW_CONSTRUCTOR - is defined. + to ensure that this trait "just works". You may test to see if + the necessary support is available by checking to see if defined(BOOST_HAS_NOTHROW_CONSTRUCTOR) || (!defined(BOOST_NO_CXX11_DECLTYPE) + && !defined(BOOST_NO_CXX11_NOEXCEPT)) + is true.

Header: #include diff --git a/doc/html/boost_typetraits/reference/has_nothrow_copy.html b/doc/html/boost_typetraits/reference/has_nothrow_copy.html index 0da7c7e..1ffa425 100644 --- a/doc/html/boost_typetraits/reference/has_nothrow_copy.html +++ b/doc/html/boost_typetraits/reference/has_nothrow_copy.html @@ -7,7 +7,7 @@ - +

@@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -43,20 +43,15 @@ These two traits are synonyms for each other.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, has_nothrow_copy - will never report that a class or struct has a non-throwing copy-constructor; - this is always safe, if possibly sub-optimal. Currently (May 2011) compilers - more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear + Compiler Compatibility: Either requires + C++11 noexcept and decltype or else some (unspecified) help from + the compiler. Currently (June 2015) compilers more recent than Visual C++ + 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear and all recent GCC versions have the necessary compiler intrinsics - to ensure that this trait "just works". You may also test to see - if the necessary intrinsics - are available by checking to see if the macro BOOST_HAS_NOTHROW_COPY - is defined. + to ensure that this trait "just works". You may test to see if + the necessary support is available by checking to see if defined(BOOST_HAS_NOTHROW_COPY) || (!defined(BOOST_NO_CXX11_DECLTYPE) + && !defined(BOOST_NO_CXX11_NOEXCEPT)) + is true.

Header: #include @@ -78,7 +73,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html b/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html index 08698f8..5ca8144 100644 --- a/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html +++ b/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext

@@ -44,7 +44,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_trivial_assign.html b/doc/html/boost_typetraits/reference/has_trivial_assign.html index 453e43a..e11e420 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_assign.html +++ b/doc/html/boost_typetraits/reference/has_trivial_assign.html @@ -40,15 +40,12 @@ can be safely replaced with a call to memcpy.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, has_trivial_assign - will never report that a user-defined class or struct has a trivial constructor; - this is always safe, if possibly sub-optimal. Currently (May 2011) compilers - more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear + Compiler Compatibility: Without some (as + yet unspecified) help from the compiler, has_trivial_assign will never report + that a user-defined class or struct has a trivial constructor; this is always + safe, if possibly sub-optimal. In order to correctly handle deleted or private + assignment operators, the compiler must also support C++11's decltype. Currently (May 2015) compilers more + recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear have the necessary compiler intrinsics to ensure that this trait "just works". You may also test to see if the necessary intrinsics diff --git a/doc/html/boost_typetraits/reference/has_trivial_constructor.html b/doc/html/boost_typetraits/reference/has_trivial_constructor.html index 103b367..34666a5 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_constructor.html +++ b/doc/html/boost_typetraits/reference/has_trivial_constructor.html @@ -48,16 +48,13 @@ some benefit in terms of code size and speed can be obtained.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, has_trivial_constructor - will never report that a user-defined class or struct has a trivial constructor; - this is always safe, if possibly sub-optimal. Currently (May 2011) compilers - more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear - have the necessary compiler intrinsics + Compiler Compatibility: Without some (as + yet unspecified) help from the compiler, has_trivial_constructor will never + report that a user-defined class or struct has a trivial constructor; this + is always safe, if possibly sub-optimal. In addition, in order to correctly + handle private or deleted default-constructors then C++11's deltype is required. Currently (May 2015) + compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, + and Codegear have the necessary compiler intrinsics to ensure that this trait "just works". You may also test to see if the necessary intrinsics are available by checking to see if the macro BOOST_HAS_TRIVIAL_CONSTRUCTOR diff --git a/doc/html/boost_typetraits/reference/has_trivial_copy.html b/doc/html/boost_typetraits/reference/has_trivial_copy.html index 6a8f205..85c3f8e 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_copy.html +++ b/doc/html/boost_typetraits/reference/has_trivial_copy.html @@ -46,19 +46,17 @@ can be safely replaced with a call to memcpy.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, has_trivial_copy - will never report that a user-defined class or struct has a trivial constructor; - this is always safe, if possibly sub-optimal. Currently (May 2011) compilers - more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear - have the necessary compiler intrinsics - to ensure that this trait "just works". You may also test to see - if the necessary intrinsics - are available by checking to see if the macro BOOST_HAS_TRIVIAL_COPY + Compiler Compatibility: Without some (as + yet unspecified) help from the compiler, has_trivial_copy will never report + that a user-defined class or struct has a trivial constructor; this is always + safe, if possibly sub-optimal. In addition, in order to correctly handle + deleted or private copy-constructors then C++11's dectype + is required. Currently (May 2015) compilers more recent than Visual C++ 8, + GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear have the necessary compiler + intrinsics to ensure that + this trait "just works". You may also test to see if the necessary + intrinsics are available + by checking to see if the macro BOOST_HAS_TRIVIAL_COPY is defined.

diff --git a/doc/html/boost_typetraits/reference/has_trivial_destructor.html b/doc/html/boost_typetraits/reference/has_trivial_destructor.html index 76f346c..26b44ab 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_destructor.html +++ b/doc/html/boost_typetraits/reference/has_trivial_destructor.html @@ -42,16 +42,13 @@ some benefit in terms of code size and speed can be obtained.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, has_trivial_destructor - will never report that a user-defined class or struct has a trivial destructor; - this is always safe, if possibly sub-optimal. Currently (May 2011) compilers - more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear - have the necessary compiler intrinsics + Compiler Compatibility: Without some (as + yet unspecified) help from the compiler, has_trivial_destructor will never + report that a user-defined class or struct has a trivial destructor; this + is always safe, if possibly sub-optimal. In addition, in order to correctly + handle deleted or private destructors then support for C++11's decltype is required. Currently (June 2015) + compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, + and Codegear have the necessary compiler intrinsics to ensure that this trait "just works". You may also test to see if the necessary intrinsics are available by checking to see if the macro BOOST_HAS_TRIVIAL_DESTRUCTOR diff --git a/doc/html/boost_typetraits/reference/has_trivial_move_assign.html b/doc/html/boost_typetraits/reference/has_trivial_move_assign.html index 330a719..93dc7ae 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_move_assign.html +++ b/doc/html/boost_typetraits/reference/has_trivial_move_assign.html @@ -40,17 +40,14 @@ operator can be safely replaced with a call to memcpy.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, has_trivial_move_assign - will never report that a user-defined class or struct has a trivial constructor; - this is always safe, if possibly sub-optimal. Currently (February 2013) compilers - have no necessary intrinsics - to ensure that this trait "just works". You may also test to see - if the necessary intrinsics + Compiler Compatibility: Without some (as + yet unspecified) help from the compiler, has_trivial_move_assign will never + report that a user-defined class or struct has a trivial move assign; this + is always safe, if possibly sub-optimal. In addition, in order to correctly + handle private or deleted move assignment operators then c++11's decltype is required. Currently (June 2015) + compilers that have the necessary intrinsics + to ensure that this trait "just works" include Clang, GCC-5.1 and + MSVC-12.0. You may also test to see if the necessary intrinsics are available by checking to see if the macro BOOST_HAS_TRIVIAL_MOVE_ASSIGN is defined.

diff --git a/doc/html/boost_typetraits/reference/has_trivial_move_constructor.html b/doc/html/boost_typetraits/reference/has_trivial_move_constructor.html index b244be0..e0e5d3a 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_move_constructor.html +++ b/doc/html/boost_typetraits/reference/has_trivial_move_constructor.html @@ -40,17 +40,14 @@ can be safely replaced with a call to memcpy.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, has_trivial_move_constructor - will never report that a user-defined class or struct has a trivial constructor; - this is always safe, if possibly sub-optimal. Currently (February 2013) compilers - have no necessary intrinsics - to ensure that this trait "just works". You may also test to see - if the necessary intrinsics + Compiler Compatibility: Without some (as + yet unspecified) help from the compiler, has_trivial_move_constructor will + never report that a user-defined class or struct has a trivial constructor; + this is always safe, if possibly sub-optimal. In addition C++11's decltype is required to correctly support + deleted or private move constructors. Currently (June 2015) compilers that + have the necessary intrinsics + to ensure that this trait "just works" include Clang, GCC-5.1, + and MSVC-12.0. You may also test to see if the necessary intrinsics are available by checking to see if the macro BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR is defined.

diff --git a/doc/html/boost_typetraits/reference/has_virtual_destructor.html b/doc/html/boost_typetraits/reference/has_virtual_destructor.html index 6c0fe00..4abb29d 100644 --- a/doc/html/boost_typetraits/reference/has_virtual_destructor.html +++ b/doc/html/boost_typetraits/reference/has_virtual_destructor.html @@ -35,15 +35,14 @@ otherwise inherits from false_type.

- Compiler Compatibility: This trait is provided - for completeness, since it's part of the Technical Report on C++ Library - Extensions. However, there is currently no way to portably implement this - trait. The default version provided always inherits from false_type, + Compiler Compatibility: There is currently + no way to portably implement this trait: the default version always inherits + from false_type, and has to be explicitly specialized for types with virtual destructors unless the compiler used has compiler intrinsics - that enable the trait to do the right thing: Currently (May 2011) compilers - more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear - have the necessary compiler intrinsics + that enable the trait to do the right thing: Currently (June 2015) compilers + more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, plus + Codegear and Clang have the necessary compiler intrinsics to ensure that this trait "just works". You may also test to see if the necessary intrinsics are available by checking to see if the macro BOOST_HAS_VIRTUAL_DESTRUCTOR diff --git a/doc/html/boost_typetraits/reference/integral_constant.html b/doc/html/boost_typetraits/reference/integral_constant.html index 4f53b75..8eb28b4 100644 --- a/doc/html/boost_typetraits/reference/integral_constant.html +++ b/doc/html/boost_typetraits/reference/integral_constant.html @@ -32,6 +32,7 @@ typedef integral_constant<T, val> type; typedef T value_type; static const T value = val; + constexpr operator T()const; }; typedef integral_constant<bool, true> true_type; diff --git a/doc/html/boost_typetraits/reference/integral_promotion.html b/doc/html/boost_typetraits/reference/integral_promotion.html index 223a773..ca664ba 100644 --- a/doc/html/boost_typetraits/reference/integral_promotion.html +++ b/doc/html/boost_typetraits/reference/integral_promotion.html @@ -49,7 +49,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.21. Examples

+

Table 1.22. Examples

diff --git a/doc/html/boost_typetraits/reference/is_array.html b/doc/html/boost_typetraits/reference/is_array.html index 3e84563..78741ae 100644 --- a/doc/html/boost_typetraits/reference/is_array.html +++ b/doc/html/boost_typetraits/reference/is_array.html @@ -7,7 +7,7 @@ - +
@@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -43,9 +43,8 @@ or #include <boost/type_traits.hpp>

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can give the wrong result with function types. + Compiler Compatibility: All current compilers + are supported by this trait.

Examples: @@ -78,7 +77,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_base_of.html b/doc/html/boost_typetraits/reference/is_base_of.html index ecbd126..de2e639 100644 --- a/doc/html/boost_typetraits/reference/is_base_of.html +++ b/doc/html/boost_typetraits/reference/is_base_of.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext

@@ -57,15 +57,8 @@ or #include <boost/type_traits.hpp>

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. There are some older compilers which - will produce compiler errors if Base - is a private base class of Derived, - or if Base is an ambiguous - base of Derived. These compilers - include Borland C++, older versions of Sun Forte C++, Digital Mars C++, and - older versions of EDG based compilers. + Compiler Compatibility: All current compilers + are supported by this trait.

Examples: @@ -108,7 +101,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_class.html b/doc/html/boost_typetraits/reference/is_class.html index ae5c903..480364a 100644 --- a/doc/html/boost_typetraits/reference/is_class.html +++ b/doc/html/boost_typetraits/reference/is_class.html @@ -43,16 +43,11 @@ or #include <boost/type_traits.hpp>

- Compiler Compatibility: Without (some as - yet unspecified) help from the compiler, we cannot distinguish between union - and class types, as a result this type will erroneously inherit from true_type for - union types. See also is_union. - Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills - 6.0, Intel-11.0, and Codegear have the necessary compiler intrinsics - to ensure that this trait "just works". You may also test to see - if the necessary intrinsics - are available by checking to see if the macro BOOST_IS_CLASS - is defined. + Compiler Compatibility: This trait works + correctly for almost all current compilers (as of June 2015), with just a + minority of older compilers not correctly detecting all the corner cases. + You can check the macro BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION + which is defined to 1 when the class works correctly in all cases.

Examples: diff --git a/doc/html/boost_typetraits/reference/is_complex.html b/doc/html/boost_typetraits/reference/is_complex.html index ec977c7..684b36c 100644 --- a/doc/html/boost_typetraits/reference/is_complex.html +++ b/doc/html/boost_typetraits/reference/is_complex.html @@ -38,6 +38,10 @@

C++ Standard Reference: 26.2.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_complex.hpp> diff --git a/doc/html/boost_typetraits/reference/is_compound.html b/doc/html/boost_typetraits/reference/is_compound.html index 0d04efa..41d9dde 100644 --- a/doc/html/boost_typetraits/reference/is_compound.html +++ b/doc/html/boost_typetraits/reference/is_compound.html @@ -38,6 +38,10 @@

C++ Standard Reference: 3.9.2.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_compound.hpp> diff --git a/doc/html/boost_typetraits/reference/is_const.html b/doc/html/boost_typetraits/reference/is_const.html index 010c6ef..d5142bf 100644 --- a/doc/html/boost_typetraits/reference/is_const.html +++ b/doc/html/boost_typetraits/reference/is_const.html @@ -7,7 +7,7 @@ - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext

@@ -42,6 +42,10 @@ <boost/type_traits/is_const.hpp> or #include <boost/type_traits.hpp>

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Examples:

@@ -87,7 +91,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_convertible.html b/doc/html/boost_typetraits/reference/is_convertible.html index f4ccb5f..497748b 100644 --- a/doc/html/boost_typetraits/reference/is_convertible.html +++ b/doc/html/boost_typetraits/reference/is_convertible.html @@ -6,8 +6,8 @@ - - + + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -69,12 +69,8 @@ C++ Standard Reference: 4 and 8.5.

- Compiler Compatibility: This template is - currently broken with Borland C++ Builder 5 (and earlier), for constructor-based - conversions, and for the Metrowerks 7 (and earlier) compiler in all cases. - If the compiler does not support is_abstract, - then the template parameter To - must not be an abstract type. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include @@ -127,7 +123,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_copy_assignable.html b/doc/html/boost_typetraits/reference/is_copy_assignable.html index 9b2495a..83f3f3d 100644 --- a/doc/html/boost_typetraits/reference/is_copy_assignable.html +++ b/doc/html/boost_typetraits/reference/is_copy_assignable.html @@ -6,8 +6,8 @@ - - + + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -47,9 +47,9 @@ boost::noncopyable and is not marked with BOOST_MOVABLE_BUT_NOT_COPYABLE(T).

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used. + Compiler Compatibility: Requires the C++11 + features decltype and SFINAE-expressions + for full support.

If your compiler does not support C++11 deleted functions (= delete) @@ -100,7 +100,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_copy_constructible.html b/doc/html/boost_typetraits/reference/is_copy_constructible.html index 456c272..aa9782f 100644 --- a/doc/html/boost_typetraits/reference/is_copy_constructible.html +++ b/doc/html/boost_typetraits/reference/is_copy_constructible.html @@ -6,8 +6,8 @@ - - + + @@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -45,9 +45,9 @@ boost::noncopyable and does not marked with BOOST_MOVABLE_BUT_NOT_COPYABLE(T).

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used. + Compiler Compatibility: This trait requires + the C++11 features decltype + and SFINAE-expression support for full support.

If your compiler does not support C++11 deleted functions (= delete) @@ -56,7 +56,8 @@ that class is noncopyable.

- Trait does not care about access modifiers, so if you see errors like this: + The trait does not care about access modifiers, so if you see errors like + this:

'T::T(const T&)' is private
 boost/type_traits/is_copy_constructible.hpp:68:5: error: within this context
@@ -97,7 +98,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_empty.html b/doc/html/boost_typetraits/reference/is_empty.html index f2be447..fbff564 100644 --- a/doc/html/boost_typetraits/reference/is_empty.html +++ b/doc/html/boost_typetraits/reference/is_empty.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@
-PrevUpHomeNext +PrevUpHomeNext

@@ -59,13 +59,6 @@

Can not be used with incomplete types.

-

- Can not be used with union types, until is_union can be made to work. -

-

- If the compiler does not support partial-specialization of class templates, - then this template can not be used with abstract types. -

Examples:

@@ -103,7 +96,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_enum.html b/doc/html/boost_typetraits/reference/is_enum.html index d026c1b..cfa1e46 100644 --- a/doc/html/boost_typetraits/reference/is_enum.html +++ b/doc/html/boost_typetraits/reference/is_enum.html @@ -43,11 +43,8 @@ or #include <boost/type_traits.hpp>

- Compiler Compatibility: Requires a correctly - functioning is_convertible - template; this means that is_enum is currently broken under Borland C++ Builder - 5, and for the Metrowerks compiler prior to version 8, other compilers should - handle this template just fine. + Compiler Compatibility: All current compilers + are supported by this trait.

Examples: diff --git a/doc/html/boost_typetraits/reference/is_final.html b/doc/html/boost_typetraits/reference/is_final.html index 8d94ed4..cd40fb2 100644 --- a/doc/html/boost_typetraits/reference/is_final.html +++ b/doc/html/boost_typetraits/reference/is_final.html @@ -45,11 +45,12 @@ never inherit from true_type, unless the user explicitly specializes the template for their user-defined final class types, or unless the compiler supplies some unspecified intrinsic - that implements this functionality. Currently (Aug 2014) compilers more recent - than GCC-4.7, and Clang have the necessary compiler intrinsics - to ensure that this trait "just works". You may also test to see - if the necessary intrinsics - are available by checking to see if the macro BOOST_IS_FINAL + that implements this functionality. Currently (June 2015) compilers more + recent than GCC-4.7, Oracle-12.4, and Clang have the necessary compiler + intrinsics to ensure that + this trait "just works". You may also test to see if the necessary + intrinsics are available + by checking to see if the macro BOOST_IS_FINAL is defined.

diff --git a/doc/html/boost_typetraits/reference/is_floating_point.html b/doc/html/boost_typetraits/reference/is_floating_point.html index e79fd23..2335462 100644 --- a/doc/html/boost_typetraits/reference/is_floating_point.html +++ b/doc/html/boost_typetraits/reference/is_floating_point.html @@ -37,6 +37,10 @@

C++ Standard Reference: 3.9.1p8.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_floating_point.hpp> diff --git a/doc/html/boost_typetraits/reference/is_function.html b/doc/html/boost_typetraits/reference/is_function.html index 8cd9e5a..0f24871 100644 --- a/doc/html/boost_typetraits/reference/is_function.html +++ b/doc/html/boost_typetraits/reference/is_function.html @@ -43,6 +43,10 @@

C++ Standard Reference: 3.9.2p1 and 8.3.5.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_function.hpp> diff --git a/doc/html/boost_typetraits/reference/is_fundamental.html b/doc/html/boost_typetraits/reference/is_fundamental.html index 330e2e1..e074caa 100644 --- a/doc/html/boost_typetraits/reference/is_fundamental.html +++ b/doc/html/boost_typetraits/reference/is_fundamental.html @@ -41,6 +41,10 @@

C++ Standard Reference: 3.9.1.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_fundamental.hpp> diff --git a/doc/html/boost_typetraits/reference/is_integral.html b/doc/html/boost_typetraits/reference/is_integral.html index 2de58bb..bdbb7a2 100644 --- a/doc/html/boost_typetraits/reference/is_integral.html +++ b/doc/html/boost_typetraits/reference/is_integral.html @@ -37,6 +37,10 @@

C++ Standard Reference: 3.9.1p7.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_integral.hpp> diff --git a/doc/html/boost_typetraits/reference/is_lvalue_reference.html b/doc/html/boost_typetraits/reference/is_lvalue_reference.html index c076691..56c51dc 100644 --- a/doc/html/boost_typetraits/reference/is_lvalue_reference.html +++ b/doc/html/boost_typetraits/reference/is_lvalue_reference.html @@ -38,10 +38,8 @@ C++ Standard Reference: 3.9.2 and 8.3.2.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - may report the wrong result for function types, and for types that are both - const and volatile qualified. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include diff --git a/doc/html/boost_typetraits/reference/is_member_function_pointer.html b/doc/html/boost_typetraits/reference/is_member_function_pointer.html index 0ffe473..15ece40 100644 --- a/doc/html/boost_typetraits/reference/is_member_function_pointer.html +++ b/doc/html/boost_typetraits/reference/is_member_function_pointer.html @@ -37,6 +37,10 @@

C++ Standard Reference: 3.9.2 and 8.3.3.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_member_function_pointer.hpp> diff --git a/doc/html/boost_typetraits/reference/is_member_object_pointer.html b/doc/html/boost_typetraits/reference/is_member_object_pointer.html index 1d220c3..b046242 100644 --- a/doc/html/boost_typetraits/reference/is_member_object_pointer.html +++ b/doc/html/boost_typetraits/reference/is_member_object_pointer.html @@ -37,6 +37,10 @@

C++ Standard Reference: 3.9.2 and 8.3.3.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_member_object_pointer.hpp> diff --git a/doc/html/boost_typetraits/reference/is_member_pointer.html b/doc/html/boost_typetraits/reference/is_member_pointer.html index 2218849..0ed4032 100644 --- a/doc/html/boost_typetraits/reference/is_member_pointer.html +++ b/doc/html/boost_typetraits/reference/is_member_pointer.html @@ -38,6 +38,10 @@

C++ Standard Reference: 3.9.2 and 8.3.3.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_member_pointer.hpp> diff --git a/doc/html/boost_typetraits/reference/is_nothrow_move_assignable.html b/doc/html/boost_typetraits/reference/is_nothrow_move_assignable.html index 9535553..48da178 100644 --- a/doc/html/boost_typetraits/reference/is_nothrow_move_assignable.html +++ b/doc/html/boost_typetraits/reference/is_nothrow_move_assignable.html @@ -53,9 +53,9 @@ Without some (C++11 noexcept shall work correctly) help from the compiler, is_nothrow_move_assignable will never report that a class or struct has a non-throwing assignment-operator; - this is always safe, if possibly sub-optimal. Currently (February 2013) Clang - and GCC 4.7 have the necessary compiler support to ensure that this trait - "just works". + this is always safe, if possibly sub-optimal. Currently (June 2015) MSVC-12.0, + Clang and GCC 4.7 have the necessary compiler support to ensure that this + trait "just works".

Header: #include diff --git a/doc/html/boost_typetraits/reference/is_nothrow_move_constructible.html b/doc/html/boost_typetraits/reference/is_nothrow_move_constructible.html index 1d7d2df..1ae4dc1 100644 --- a/doc/html/boost_typetraits/reference/is_nothrow_move_constructible.html +++ b/doc/html/boost_typetraits/reference/is_nothrow_move_constructible.html @@ -43,17 +43,12 @@ is a variable of type T).

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (C++11 noexcept shall work correctly) help from the compiler, - is_nothrow_move_constructible + Compiler Compatibility: Without some (C++11 + noexcept shall work correctly) help from the compiler, is_nothrow_move_constructible will never report that a class or struct has a non-throwing copy-constructor; - this is always safe, if possibly sub-optimal. Currently (February 2013) Clang - and GCC 4.7 have the necessary compiler support to ensure that this trait - "just works". + this is always safe, if possibly sub-optimal. Currently (February 2013) MSVC-12.0, + Clang and GCC 4.7 have the necessary compiler support to ensure that this + trait "just works".

Header: #include diff --git a/doc/html/boost_typetraits/reference/is_object.html b/doc/html/boost_typetraits/reference/is_object.html index c449d8c..bb2fdc1 100644 --- a/doc/html/boost_typetraits/reference/is_object.html +++ b/doc/html/boost_typetraits/reference/is_object.html @@ -38,6 +38,10 @@

C++ Standard Reference: 3.9p9.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_object.hpp> diff --git a/doc/html/boost_typetraits/reference/is_pod.html b/doc/html/boost_typetraits/reference/is_pod.html index d8d2ff9..320a5a9 100644 --- a/doc/html/boost_typetraits/reference/is_pod.html +++ b/doc/html/boost_typetraits/reference/is_pod.html @@ -48,19 +48,14 @@ that POD's are also aggregates, see 8.5.1).

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, is_pod will never - report that a class or struct is a POD; this is always safe, if possibly - sub-optimal. Currently (May 2011) compilers more recent than Visual C++ 8, - GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear have the necessary compiler - intrinsics to ensure that - this trait "just works". You may also test to see if the necessary - intrinsics are available - by checking to see if the macro BOOST_IS_POD + Compiler Compatibility: Without some (as + yet unspecified) help from the compiler, is_pod will never report that a + class or struct is a POD; this is always safe, if possibly sub-optimal. Currently + (June 2015) compilers more recent than Visual C++ 8, Clang-3, GCC-4.3, Greenhills + 6.0, Intel-11.0, and Codegear have the necessary compiler intrinsics + to ensure that this trait "just works". You may also test to see + if the necessary intrinsics + are available by checking to see if the macro BOOST_IS_POD is defined.

diff --git a/doc/html/boost_typetraits/reference/is_pointer.html b/doc/html/boost_typetraits/reference/is_pointer.html index 9a05fa0..54afdb5 100644 --- a/doc/html/boost_typetraits/reference/is_pointer.html +++ b/doc/html/boost_typetraits/reference/is_pointer.html @@ -43,6 +43,10 @@ <boost/type_traits/is_pointer.hpp> or #include <boost/type_traits.hpp>

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Examples:

diff --git a/doc/html/boost_typetraits/reference/is_reference.html b/doc/html/boost_typetraits/reference/is_reference.html index a46b750..3a626c7 100644 --- a/doc/html/boost_typetraits/reference/is_reference.html +++ b/doc/html/boost_typetraits/reference/is_reference.html @@ -38,10 +38,8 @@ C++ Standard Reference: 3.9.2 and 8.3.2.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - may report the wrong result for function types, and for types that are both - const and volatile qualified. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include diff --git a/doc/html/boost_typetraits/reference/is_rvalue_reference.html b/doc/html/boost_typetraits/reference/is_rvalue_reference.html index e3b8b57..03efcd4 100644 --- a/doc/html/boost_typetraits/reference/is_rvalue_reference.html +++ b/doc/html/boost_typetraits/reference/is_rvalue_reference.html @@ -38,10 +38,8 @@ C++ Standard Reference: 3.9.2 and 8.3.2.

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - may report the wrong result for function types, and for types that are both - const and volatile qualified. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include diff --git a/doc/html/boost_typetraits/reference/is_same.html b/doc/html/boost_typetraits/reference/is_same.html index 7644c8c..41e2ba5 100644 --- a/doc/html/boost_typetraits/reference/is_same.html +++ b/doc/html/boost_typetraits/reference/is_same.html @@ -40,9 +40,8 @@ or #include <boost/type_traits.hpp>

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with abstract, incomplete or function types. + Compiler Compatibility: All current compilers + are supported by this trait.

Examples: diff --git a/doc/html/boost_typetraits/reference/is_scalar.html b/doc/html/boost_typetraits/reference/is_scalar.html index 8ebbd9d..86f733d 100644 --- a/doc/html/boost_typetraits/reference/is_scalar.html +++ b/doc/html/boost_typetraits/reference/is_scalar.html @@ -45,9 +45,8 @@ or #include <boost/type_traits.hpp>

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. + Compiler Compatibility: All current compilers + are supported by this trait.

Examples: diff --git a/doc/html/boost_typetraits/reference/is_signed.html b/doc/html/boost_typetraits/reference/is_signed.html index 54db92e..b443e2a 100644 --- a/doc/html/boost_typetraits/reference/is_signed.html +++ b/doc/html/boost_typetraits/reference/is_signed.html @@ -38,6 +38,10 @@

C++ Standard Reference: 3.9.1, 7.2.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_signed.hpp> diff --git a/doc/html/boost_typetraits/reference/is_stateless.html b/doc/html/boost_typetraits/reference/is_stateless.html index feb4b0c..b207dcf 100644 --- a/doc/html/boost_typetraits/reference/is_stateless.html +++ b/doc/html/boost_typetraits/reference/is_stateless.html @@ -58,17 +58,12 @@ or #include <boost/type_traits.hpp>

- Compiler Compatibility: If the compiler - does not support partial-specialization of class templates, then this template - can not be used with function types. -

-

- Without some (as yet unspecified) help from the compiler, is_stateless will - never report that a class or struct is stateless; this is always safe, if - possibly sub-optimal. Currently (May 2011) compilers more recent than Visual - C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear have the necessary - compiler intrinsics to - ensure that this trait "just works". + Compiler Compatibility: Without some (as + yet unspecified) help from the compiler, is_stateless will never report that + a class or struct is stateless; this is always safe, if possibly sub-optimal. + Currently (June 2015) compilers more recent than Visual C++ 8, Clang, GCC-4.3, + Greenhills 6.0, Intel-11.0, and Codegear have the necessary compiler intrinsics to ensure that this + trait "just works".

diff --git a/doc/html/boost_typetraits/reference/is_union.html b/doc/html/boost_typetraits/reference/is_union.html index f6cd401..eb03217 100644 --- a/doc/html/boost_typetraits/reference/is_union.html +++ b/doc/html/boost_typetraits/reference/is_union.html @@ -46,9 +46,9 @@ inherit from true_type, unless the user explicitly specializes the template for their user-defined union types, or unless the compiler supplies some unspecified intrinsic that - implements this functionality. Currently (May 2011) compilers more recent - than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear have - the necessary compiler intrinsics + implements this functionality. Currently (June 2015) compilers more recent + than Visual C++ 8, clang, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear + have the necessary compiler intrinsics to ensure that this trait "just works". You may also test to see if the necessary intrinsics are available by checking to see if the macro BOOST_IS_UNION diff --git a/doc/html/boost_typetraits/reference/is_unsigned.html b/doc/html/boost_typetraits/reference/is_unsigned.html index d49a6b6..4c706d7 100644 --- a/doc/html/boost_typetraits/reference/is_unsigned.html +++ b/doc/html/boost_typetraits/reference/is_unsigned.html @@ -38,6 +38,10 @@

C++ Standard Reference: 3.9.1, 7.2.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_unsigned.hpp> diff --git a/doc/html/boost_typetraits/reference/is_virtual_base_of.html b/doc/html/boost_typetraits/reference/is_virtual_base_of.html index 238ea34..7d1f9dd 100644 --- a/doc/html/boost_typetraits/reference/is_virtual_base_of.html +++ b/doc/html/boost_typetraits/reference/is_virtual_base_of.html @@ -46,9 +46,8 @@ or #include <boost/type_traits.hpp>

- Compiler Compatibility: this trait also - requires a working is_base_of - trait. + Compiler Compatibility: All current compilers + are supported by this trait.

@@ -58,7 +57,8 @@

There are a small number of cases where it's simply not possible for this trait to work, and where attempting to instantiate the trait will cause - compiler errors (see bug report #3730). + compiler errors (see bug reports #3730 + and 11323). Further more the issues may well be compiler specific. In this situation the user should supply a full specialization of the trait to work around the problem. diff --git a/doc/html/boost_typetraits/reference/is_void.html b/doc/html/boost_typetraits/reference/is_void.html index d1fbee0..819d96c 100644 --- a/doc/html/boost_typetraits/reference/is_void.html +++ b/doc/html/boost_typetraits/reference/is_void.html @@ -37,6 +37,10 @@

C++ Standard Reference: 3.9.1p9.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_void.hpp> diff --git a/doc/html/boost_typetraits/reference/is_volatile.html b/doc/html/boost_typetraits/reference/is_volatile.html index 59cc21f..9d3c19a 100644 --- a/doc/html/boost_typetraits/reference/is_volatile.html +++ b/doc/html/boost_typetraits/reference/is_volatile.html @@ -37,6 +37,10 @@

C++ Standard Reference: 3.9.3.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/is_volatile.hpp> diff --git a/doc/html/boost_typetraits/reference/make_signed.html b/doc/html/boost_typetraits/reference/make_signed.html index cf3a724..2baa3af 100644 --- a/doc/html/boost_typetraits/reference/make_signed.html +++ b/doc/html/boost_typetraits/reference/make_signed.html @@ -48,13 +48,17 @@

C++ Standard Reference: 3.9.1.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/make_signed.hpp> or #include <boost/type_traits.hpp>

-

Table 1.22. Examples

+

Table 1.23. Examples

diff --git a/doc/html/boost_typetraits/reference/make_unsigned.html b/doc/html/boost_typetraits/reference/make_unsigned.html index 48ace73..914cacf 100644 --- a/doc/html/boost_typetraits/reference/make_unsigned.html +++ b/doc/html/boost_typetraits/reference/make_unsigned.html @@ -48,13 +48,17 @@

C++ Standard Reference: 3.9.1.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/make_unsigned.hpp> or #include <boost/type_traits.hpp>

-

Table 1.23. Examples

+

Table 1.24. Examples

diff --git a/doc/html/boost_typetraits/reference/promote.html b/doc/html/boost_typetraits/reference/promote.html index abc78e7..69a600b 100644 --- a/doc/html/boost_typetraits/reference/promote.html +++ b/doc/html/boost_typetraits/reference/promote.html @@ -45,13 +45,17 @@ C++ Standard Reference: 4.5 except 4.5/3 (integral bit-field) and 4.6.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/promote.hpp> or #include <boost/type_traits.hpp>

-

Table 1.24. Examples

+

Table 1.25. Examples

diff --git a/doc/html/boost_typetraits/reference/rank.html b/doc/html/boost_typetraits/reference/rank.html index 5dcb436..875e73a 100644 --- a/doc/html/boost_typetraits/reference/rank.html +++ b/doc/html/boost_typetraits/reference/rank.html @@ -39,6 +39,10 @@ If T is not a (built-in) array type, then RANK(T) is zero.

+

+ Compiler Compatibility: All current compilers + are supported by this trait. +

Header: #include <boost/type_traits/rank.hpp> diff --git a/doc/html/boost_typetraits/reference/remove_all_extents.html b/doc/html/boost_typetraits/reference/remove_all_extents.html index 212417d..3b844e9 100644 --- a/doc/html/boost_typetraits/reference/remove_all_extents.html +++ b/doc/html/boost_typetraits/reference/remove_all_extents.html @@ -41,12 +41,8 @@ C++ Standard Reference: 8.3.4.

- Compiler Compatibility: If the compiler - does not support partial specialization of class-templates then this template - will compile, but the member type - will always be the same as type T - except where compiler - workarounds have been applied. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include @@ -54,7 +50,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.25. Examples

+

Table 1.26. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_const.html b/doc/html/boost_typetraits/reference/remove_const.html index cd88642..77753f1 100644 --- a/doc/html/boost_typetraits/reference/remove_const.html +++ b/doc/html/boost_typetraits/reference/remove_const.html @@ -40,12 +40,8 @@ C++ Standard Reference: 3.9.3.

- Compiler Compatibility: If the compiler - does not support partial specialization of class-templates then this template - will compile, but the member type - will always be the same as type T - except where compiler - workarounds have been applied. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include @@ -53,7 +49,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.26. Examples

+

Table 1.27. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_cv.html b/doc/html/boost_typetraits/reference/remove_cv.html index 933e79d..91ac299 100644 --- a/doc/html/boost_typetraits/reference/remove_cv.html +++ b/doc/html/boost_typetraits/reference/remove_cv.html @@ -40,12 +40,8 @@ C++ Standard Reference: 3.9.3.

- Compiler Compatibility: If the compiler - does not support partial specialization of class-templates then this template - will compile, but the member type - will always be the same as type T - except where compiler - workarounds have been applied. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include @@ -53,7 +49,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.27. Examples

+

Table 1.28. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_extent.html b/doc/html/boost_typetraits/reference/remove_extent.html index bb5b7b3..05ffeff 100644 --- a/doc/html/boost_typetraits/reference/remove_extent.html +++ b/doc/html/boost_typetraits/reference/remove_extent.html @@ -41,12 +41,8 @@ C++ Standard Reference: 8.3.4.

- Compiler Compatibility: If the compiler - does not support partial specialization of class-templates then this template - will compile, but the member type - will always be the same as type T - except where compiler - workarounds have been applied. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include @@ -54,7 +50,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.28. Examples

+

Table 1.29. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_pointer.html b/doc/html/boost_typetraits/reference/remove_pointer.html index de1db74..bf2d59f 100644 --- a/doc/html/boost_typetraits/reference/remove_pointer.html +++ b/doc/html/boost_typetraits/reference/remove_pointer.html @@ -42,12 +42,8 @@ C++ Standard Reference: 8.3.1.

- Compiler Compatibility: If the compiler - does not support partial specialization of class-templates then this template - will compile, but the member type - will always be the same as type T - except where compiler - workarounds have been applied. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include @@ -55,7 +51,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.29. Examples

+

Table 1.30. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_reference.html b/doc/html/boost_typetraits/reference/remove_reference.html index 4ffeff9..37caa50 100644 --- a/doc/html/boost_typetraits/reference/remove_reference.html +++ b/doc/html/boost_typetraits/reference/remove_reference.html @@ -40,12 +40,8 @@ C++ Standard Reference: 8.3.2.

- Compiler Compatibility: If the compiler - does not support partial specialization of class-templates then this template - will compile, but the member type - will always be the same as type T - except where compiler - workarounds have been applied. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include @@ -53,7 +49,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.30. Examples

+

Table 1.31. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_volatile.html b/doc/html/boost_typetraits/reference/remove_volatile.html index 57f4735..155fb13 100644 --- a/doc/html/boost_typetraits/reference/remove_volatile.html +++ b/doc/html/boost_typetraits/reference/remove_volatile.html @@ -7,7 +7,7 @@ - +
@@ -20,7 +20,7 @@

-PrevUpHomeNext +PrevUpHomeNext

@@ -40,12 +40,8 @@ C++ Standard Reference: 3.9.3.

- Compiler Compatibility: If the compiler - does not support partial specialization of class-templates then this template - will compile, but the member type - will always be the same as type T - except where compiler - workarounds have been applied. + Compiler Compatibility: All current compilers + are supported by this trait.

Header: #include @@ -53,7 +49,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.31. Examples

+

Table 1.32. Examples

@@ -155,7 +151,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/type_with_alignment.html b/doc/html/boost_typetraits/reference/type_with_alignment.html index 242e702..67156e5 100644 --- a/doc/html/boost_typetraits/reference/type_with_alignment.html +++ b/doc/html/boost_typetraits/reference/type_with_alignment.html @@ -6,7 +6,7 @@ - + @@ -20,7 +20,7 @@


-PrevUpHomeNext +PrevUpHomeNext

@@ -56,7 +56,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/index.html b/doc/html/index.html index 6b90ebf..e4aedc8 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -94,7 +94,9 @@
alignment_of
conditional
common_type
+
copy_cv
decay
+
declval
extent
floating_point_promotion
function_traits
@@ -130,6 +132,7 @@
has_nothrow_assign
has_nothrow_constructor
has_nothrow_copy
+
has_nothrow_destructor
has_nothrow_copy_constructor
has_nothrow_default_constructor
has_plus
@@ -156,14 +159,18 @@
is_abstract
is_arithmetic
is_array
+
is_assignable
is_base_of
is_class
is_complex
is_compound
is_const
+
is_constructible
is_convertible
-
is_copy_constructible
is_copy_assignable
+
is_copy_constructible
+
is_default_constructible
+
is_destructible
is_empty
is_enum
is_final
@@ -203,6 +210,7 @@
remove_pointer
remove_reference
remove_volatile
+
type_identity
type_with_alignment
History
diff --git a/doc/html/index/s11.html b/doc/html/index/s11.html index 198d865..cedaa2f 100644 --- a/doc/html/index/s11.html +++ b/doc/html/index/s11.html @@ -24,7 +24,7 @@

-Class Index

+Class Index

A C D E F H I M N O P R T

diff --git a/doc/html/index/s12.html b/doc/html/index/s12.html index 268e753..c03e68e 100644 --- a/doc/html/index/s12.html +++ b/doc/html/index/s12.html @@ -24,7 +24,7 @@

-Typedef Index

+Typedef Index

F R T V

diff --git a/doc/html/index/s13.html b/doc/html/index/s13.html index 6db8623..96f4896 100644 --- a/doc/html/index/s13.html +++ b/doc/html/index/s13.html @@ -24,7 +24,7 @@

-Macro Index

+Macro Index

B

@@ -36,16 +36,13 @@
  • -

    BOOST_COMMON_TYPE_DONT_USE_TYPEOF

    - -
  • -
  • BOOST_HAS_NOTHROW_ASSIGN

  • BOOST_HAS_NOTHROW_CONSTRUCTOR

    @@ -116,10 +113,7 @@
  • BOOST_IS_CLASS

    - +
  • BOOST_IS_CONVERTIBLE

    @@ -169,6 +163,10 @@
  • Macros for Compiler Intrinsics

  • +
  • +

    BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION

    + +
  • diff --git a/doc/html/index/s14.html b/doc/html/index/s14.html index 47b53f0..f7f55ae 100644 --- a/doc/html/index/s14.html +++ b/doc/html/index/s14.html @@ -23,7 +23,7 @@

    -Index

    +Index

    A B C D E F H I M N O P R T U V

    @@ -67,16 +67,13 @@
  • -

    BOOST_COMMON_TYPE_DONT_USE_TYPEOF

    - -
  • -
  • BOOST_HAS_NOTHROW_ASSIGN

  • BOOST_HAS_NOTHROW_CONSTRUCTOR

    @@ -147,10 +144,7 @@
  • BOOST_IS_CLASS

    - +
  • BOOST_IS_CONVERTIBLE

    @@ -200,18 +194,24 @@
  • Macros for Compiler Intrinsics

  • +
  • +

    BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION

    + +
  • C
    -
    D
    @@ -512,6 +512,10 @@
  • has_new_operator

  • +

    has_nothrow_assign

    + +
  • +
  • has_nothrow_constructor

    • BOOST_HAS_NOTHROW_CONSTRUCTOR

    • @@ -535,6 +539,7 @@

      has_nothrow_default_constructor

      +
    • has_nothrow_destructor

    • has_not_equal_to

        @@ -613,7 +618,10 @@
      • has_trivial_assign

        - +
      • has_trivial_constructor

        @@ -647,7 +655,10 @@
      • has_trivial_move_assign

        - +
      • has_trivial_move_constructor

        @@ -706,11 +717,12 @@
      • is_abstract

      • is_arithmetic

      • is_array

      • +
      • is_assignable

      • is_base_of

      • is_class

        @@ -718,6 +730,7 @@
      • is_complex

      • is_compound

      • is_const

      • +
      • is_constructible

      • is_convertible

      • is_convertible_to_Ret

        @@ -725,6 +738,8 @@
      • is_copy_assignable

      • is_copy_constructible

      • +
      • is_default_constructible

      • +
      • is_destructible

      • is_empty

        diff --git a/test/has_nothrow_constr_test.cpp b/test/has_nothrow_constr_test.cpp index f2d60e3..0cc5cb7 100644 --- a/test/has_nothrow_constr_test.cpp +++ b/test/has_nothrow_constr_test.cpp @@ -37,6 +37,15 @@ struct deleted_default_construct #endif +struct private_default_construct +{ +private: + private_default_construct(); +public: + private_default_construct(char val) : member(val) {} + char member; +}; + #ifndef BOOST_NO_CXX11_NOEXCEPT struct noexcept_default_construct { @@ -201,6 +210,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::v #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); #endif +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); #ifndef BOOST_NO_CXX11_NOEXCEPT BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true); #endif diff --git a/test/has_nothrow_copy_test.cpp b/test/has_nothrow_copy_test.cpp index aa2ca02..034cb65 100644 --- a/test/has_nothrow_copy_test.cpp +++ b/test/has_nothrow_copy_test.cpp @@ -12,6 +12,13 @@ # include #endif +struct non_copy +{ + non_copy(); +private: + non_copy(const non_copy&); +}; + #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS struct delete_copy @@ -230,6 +237,10 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); #endif +#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif + TT_TEST_END diff --git a/test/has_trivial_assign_test.cpp b/test/has_trivial_assign_test.cpp index 50aced7..c5e40a3 100644 --- a/test/has_trivial_assign_test.cpp +++ b/test/has_trivial_assign_test.cpp @@ -12,6 +12,13 @@ # include #endif +struct non_assignable +{ + non_assignable(); +private: + non_assignable& operator=(const non_assignable&); +}; + #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS struct non_assignable2 @@ -217,6 +224,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false) #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); #endif +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); TT_TEST_END diff --git a/test/has_trivial_constr_test.cpp b/test/has_trivial_constr_test.cpp index 4b89df3..16a4e8a 100644 --- a/test/has_trivial_constr_test.cpp +++ b/test/has_trivial_constr_test.cpp @@ -27,6 +27,13 @@ public: explicit bug11324_derived(char arg) : data(arg) {} }; +struct private_construct +{ + private_construct(int); +private: + private_construct(); +}; + #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS struct deleted_construct @@ -197,6 +204,7 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); #endif diff --git a/test/has_trivial_copy_test.cpp b/test/has_trivial_copy_test.cpp index 6a803b8..043f76e 100644 --- a/test/has_trivial_copy_test.cpp +++ b/test/has_trivial_copy_test.cpp @@ -25,6 +25,13 @@ public: #endif +struct private_copy +{ + private_copy(); +private: + private_copy(const private_copy&); +}; + TT_TEST_BEGIN(has_trivial_copy) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); @@ -220,6 +227,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); #endif +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); TT_TEST_END diff --git a/test/has_trivial_destructor_test.cpp b/test/has_trivial_destructor_test.cpp index 960a575..3792004 100644 --- a/test/has_trivial_destructor_test.cpp +++ b/test/has_trivial_destructor_test.cpp @@ -22,6 +22,13 @@ struct deleted_destruct #endif +struct private_destruct +{ + private_destruct(); +private: + ~private_destruct(); +}; + TT_TEST_BEGIN(has_trivial_destructor) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, true); @@ -180,6 +187,7 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_destructor >::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_destructor >::value, true, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); #endif diff --git a/test/is_default_constr_test.cpp b/test/is_default_constr_test.cpp index 01a702c..89444b3 100644 --- a/test/is_default_constr_test.cpp +++ b/test/is_default_constr_test.cpp @@ -37,6 +37,15 @@ struct deleted_default_construct #endif +struct private_default_construct +{ +private: + private_default_construct(); +public: + private_default_construct(char val) : member(val) {} + char member; +}; + TT_TEST_BEGIN(is_default_constructible) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_default_constructible::value, true); @@ -189,6 +198,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_default_constructible:: #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_default_constructible::value, false); #endif +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_default_constructible::value, false); TT_TEST_END diff --git a/test/is_nothrow_move_constructible_test.cpp b/test/is_nothrow_move_constructible_test.cpp index 3fdad74..d756edc 100644 --- a/test/is_nothrow_move_constructible_test.cpp +++ b/test/is_nothrow_move_constructible_test.cpp @@ -14,6 +14,13 @@ # include #endif +struct non_copy +{ + non_copy(); +private: + non_copy(const non_copy&); +}; + #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS struct delete_copy @@ -238,6 +245,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_nothrow_move_constructible::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_nothrow_move_constructible::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_nothrow_move_constructible::value, false); + #ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_nothrow_move_constructible::value, false); #endif diff --git a/test/tricky_private_member_test.cpp b/test/tricky_private_member_test.cpp deleted file mode 100644 index b113fdf..0000000 --- a/test/tricky_private_member_test.cpp +++ /dev/null @@ -1,71 +0,0 @@ - -// (C) Copyright John Maddock 2015. -// Use, modification and distribution are subject to 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) - -#include "test.hpp" -#include "check_integral_constant.hpp" -#ifdef TEST_STD -# include -#else -# include -#endif - -struct private_default_construct -{ -private: - private_default_construct(); -public: - private_default_construct(char val) : member(val) {} - char member; -}; - -struct non_copy -{ - non_copy(); -private: - non_copy(const non_copy&); -}; - -struct non_assignable -{ - non_assignable(); -private: - non_assignable& operator=(const non_assignable&); -}; - -struct private_copy -{ - private_copy(); -private: - private_copy(const private_copy&); -}; - -struct private_destruct -{ - private_destruct(); -private: - ~private_destruct(); -}; - - - -TT_TEST_BEGIN(tricky_private_members_test) - -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); -#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); -#endif -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_default_constructible::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_nothrow_move_constructible::value, false); - - - -TT_TEST_END - -