diff --git a/doc/html/boost_typetraits/background.html b/doc/html/boost_typetraits/background.html index 40d32b9..d87b82d 100644 --- a/doc/html/boost_typetraits/background.html +++ b/doc/html/boost_typetraits/background.html @@ -2,7 +2,7 @@ Background and Tutorial - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -56,7 +56,7 @@ method available to them.

- + Type Traits

@@ -84,7 +84,7 @@ given.

- + Implementation

@@ -174,7 +174,7 @@ in the default template.

- + Optimized copy

@@ -195,32 +195,32 @@

  • - Both of the iterator types Iter1 - and Iter2 must be pointers. -
  • + Both of the iterator types Iter1 + and Iter2 must be pointers. +
  • - Both Iter1 and Iter2 must point to the same type - excluding - const and volatile-qualifiers. -
  • + Both Iter1 and Iter2 must point to the same type - excluding + const and volatile-qualifiers. +
  • - The type pointed to by Iter1 - must have a trivial assignment operator. -
  • + The type pointed to by Iter1 + must have a trivial assignment operator. +

By trivial assignment operator we mean that the type is either a scalar type[3] or:

  • - The type has no user defined assignment operator. -
  • + The type has no user defined assignment operator. +
  • - The type does not have any data members that are references. -
  • + The type does not have any data members that are references. +
  • - All base classes, and all data member objects must have trivial assignment - operators. -
  • + All base classes, and all data member objects must have trivial assignment + operators. +

If all these conditions are met then a type can be copied using memcpy rather than using a compiler generated @@ -247,7 +247,7 @@ otherwise it will call the "slow but safe version".

- + Was it worth it?

@@ -266,24 +266,24 @@

  • - If you use the right algorithm for the job in the first place then optimization - will not be required; in some cases, memcpy is the right algorithm. -
  • + If you use the right algorithm for the job in the first place then optimization + will not be required; in some cases, memcpy is the right algorithm. +
  • - If a component is going to be reused in many places by many people then optimizations - may well be worthwhile where they would not be so for a single case - in - other words, the likelihood that the optimization will be absolutely necessary - somewhere, sometime is that much higher. Just as importantly the perceived - value of the stock implementation will be higher: there is no point standardizing - an algorithm if users reject it on the grounds that there are better, more - heavily optimized versions available. -
  • + If a component is going to be reused in many places by many people then + optimizations may well be worthwhile where they would not be so for a single + case - in other words, the likelihood that the optimization will be absolutely + necessary somewhere, sometime is that much higher. Just as importantly + the perceived value of the stock implementation will be higher: there is + no point standardizing an algorithm if users reject it on the grounds that + there are better, more heavily optimized versions available. +
-

Table 1.1. Time taken to copy 1000 elements using `copy<const - T*, T*>` (times in micro-seconds)

-
+

Table 1.1. Time taken to copy 1000 elements using `copy<const T*, T*>` (times + in micro-seconds)

+
@@ -291,95 +291,95 @@ +

+ Version +

+ +

+ T +

+ +

+ Time +

+ +

+ "Optimized" copy +

+ +

+ char +

+ +

+ 0.99 +

+ +

+ Conventional copy +

+ +

+ char +

+ +

+ 8.07 +

+ +

+ "Optimized" copy +

+ +

+ int +

+ +

+ 2.52 +

+ +

+ Conventional copy +

+ +

+ int +

+ +

+ 8.02 +

+
-

- Version -

-
-

- T -

-
-

- Time -

-
-

- "Optimized" copy -

-
-

- char -

-
-

- 0.99 -

-
-

- Conventional copy -

-
-

- char -

-
-

- 8.07 -

-
-

- "Optimized" copy -

-
-

- int -

-
-

- 2.52 -

-
-

- Conventional copy -

-
-

- int -

-
-

- 8.02 -

-

- + Pair of References

@@ -416,7 +416,7 @@ to hold non-reference types, references, and constant references:

-

Table 1.2. Required Constructor Argument Types

+

Table 1.2. Required Constructor Argument Types

@@ -424,52 +424,52 @@ +

+ Type of T1 +

+ +

+ Type of parameter to initializing constructor +

+ +

+ T +

+ +

+ const T & +

+ +

+ T & +

+ +

+ T & +

+ +

+ const T & +

+ +

+ const T & +

+
-

- Type of T1 -

-
-

- Type of parameter to initializing constructor -

-
-

- T -

-
-

- const T & -

-
-

- T & -

-
-

- T & -

-
-

- const T & -

-
-

- const T & -

-
@@ -481,10 +481,8 @@ adds a reference to its type, unless it is already a reference.

-

Table 1.3. Using add_reference to synthesize the correct constructor - type

-
+

Table 1.3. Using add_reference to synthesize the correct constructor type

+
@@ -492,72 +490,73 @@ +

+ Type of T1 +

+ +

+ Type of const T1 +

+ +

+ Type of add_reference<const + T1>::type +

+ +

+ T +

+ +

+ const T +

+ +

+ const T & +

+ +

+ T & +

+ +

+ T & [8] +

+ +

+ T & +

+ +

+ const T & +

+ +

+ const T & +

+ +

+ const T & +

+
-

- Type of T1 -

-
-

- Type of const T1 -

-
-

- Type of add_reference<const T1>::type -

-
-

- T -

-
-

- const T -

-
-

- const T & -

-
-

- T & -

-
-

- T & [8] -

-
-

- T & -

-
-

- const T & -

-
-

- const T & -

-
-

- const T & -

-
@@ -598,7 +597,7 @@ easier to maintain and easier to understand.

- + Conclusion

@@ -611,7 +610,7 @@ can be optimal as well as generic.

- + Acknowledgements

@@ -619,52 +618,53 @@ comments when preparing this article.

- + References
  1. - Nathan C. Myers, C++ Report, June 1995. -
  2. + Nathan C. Myers, C++ Report, June 1995. +
  3. - The type traits library is based upon contributions by Steve Cleary, Beman - Dawes, Howard Hinnant and John Maddock: it can be found at www.boost.org. -
  4. + The type traits library is based upon contributions by Steve Cleary, Beman + Dawes, Howard Hinnant and John Maddock: it can be found at www.boost.org. +
  5. - A scalar type is an arithmetic type (i.e. a built-in integer or floating - point type), an enumeration type, a pointer, a pointer to member, or a const- - or volatile-qualified version of one of these types. -
  6. + A scalar type is an arithmetic type (i.e. a built-in integer or floating + point type), an enumeration type, a pointer, a pointer to member, or a + const- or volatile-qualified version of one of these types. +
  7. - This quote is from Donald Knuth, ACM Computing Surveys, December 1974, pg - 268. -
  8. + This quote is from Donald Knuth, ACM Computing Surveys, December 1974, + pg 268. +
  9. - The test code is available as part of the boost utility library (see algo_opt_examples.cpp), - the code was compiled with gcc 2.95 with all optimisations turned on, tests - were conducted on a 400MHz Pentium II machine running Microsoft Windows 98. -
  10. + The test code is available as part of the boost utility library (see algo_opt_examples.cpp), + the code was compiled with gcc 2.95 with all optimisations turned on, tests + were conducted on a 400MHz Pentium II machine running Microsoft Windows + 98. +
  11. - John Maddock and Howard Hinnant have submitted a "compressed_pair" - library to Boost, which uses a technique similar to the one described here - to hold references. Their pair also uses type traits to determine if any - of the types are empty, and will derive instead of contain to conserve space - -- hence the name "compressed". -
  12. + John Maddock and Howard Hinnant have submitted a "compressed_pair" + library to Boost, which uses a technique similar to the one described here + to hold references. Their pair also uses type traits to determine if any + of the types are empty, and will derive instead of contain to conserve + space -- hence the name "compressed". +
  13. - This is actually an issue with the C++ Core Language Working Group (issue - #106), submitted by Bjarne Stroustrup. The tentative resolution is to allow - a "reference to a reference to T" to mean the same thing as a "reference - to T", but only in template instantiation, in a method similar to multiple - cv-qualifiers. -
  14. + This is actually an issue with the C++ Core Language Working Group (issue + #106), submitted by Bjarne Stroustrup. The tentative resolution is to allow + a "reference to a reference to T" to mean the same thing as a + "reference to T", but only in template instantiation, in a method + similar to multiple cv-qualifiers. +
  15. - For those of you who are wondering why this shouldn't be const-qualified, - remember that references are always implicitly constant (for example, you - can't re-assign a reference). Remember also that "const T &" - is something completely different. For this reason, cv-qualifiers on template - type arguments that are references are ignored. -
  16. + For those of you who are wondering why this shouldn't be const-qualified, + remember that references are always implicitly constant (for example, you + can't re-assign a reference). Remember also that "const T &" + is something completely different. For this reason, cv-qualifiers on template + type arguments that are references are ignored. +
@@ -680,7 +680,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/category.html b/doc/html/boost_typetraits/category.html index 74805f9..ace30b2 100644 --- a/doc/html/boost_typetraits/category.html +++ b/doc/html/boost_typetraits/category.html @@ -2,7 +2,7 @@ Type Traits by Category - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -58,7 +58,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/category/alignment.html b/doc/html/boost_typetraits/category/alignment.html index 0ffeb20..0adbc81 100644 --- a/doc/html/boost_typetraits/category/alignment.html +++ b/doc/html/boost_typetraits/category/alignment.html @@ -2,7 +2,7 @@ Synthesizing Types with Specific Alignments - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -56,7 +56,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/category/function.html b/doc/html/boost_typetraits/category/function.html index 5ee12da..33aec44 100644 --- a/doc/html/boost_typetraits/category/function.html +++ b/doc/html/boost_typetraits/category/function.html @@ -2,7 +2,7 @@ Decomposing Function Types - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -53,7 +53,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/category/transform.html b/doc/html/boost_typetraits/category/transform.html index f8f4e81..f5d40d9 100644 --- a/doc/html/boost_typetraits/category/transform.html +++ b/doc/html/boost_typetraits/category/transform.html @@ -2,7 +2,7 @@ Type Traits that Transform One Type to Another - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -91,7 +91,7 @@ struct remove_volatile;

- + Broken Compiler Workarounds:
@@ -160,7 +160,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/category/value_traits.html b/doc/html/boost_typetraits/category/value_traits.html index 0683901..1286284 100644 --- a/doc/html/boost_typetraits/category/value_traits.html +++ b/doc/html/boost_typetraits/category/value_traits.html @@ -2,7 +2,7 @@ Type Traits that Describe the Properties of a Type - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -59,7 +59,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/category/value_traits/primary.html b/doc/html/boost_typetraits/category/value_traits/primary.html index 08dffa4..c5a01bf 100644 --- a/doc/html/boost_typetraits/category/value_traits/primary.html +++ b/doc/html/boost_typetraits/category/value_traits/primary.html @@ -2,7 +2,7 @@ Categorizing a Type - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -79,7 +79,10 @@ struct is_pointer; template <class T> -struct is_reference; +struct is_lvalue_reference; + +template <class T> +struct is_rvalue_reference; template <class T> struct is_union; @@ -107,6 +110,9 @@ template <class T> struct is_object; +template <class T> +struct is_reference; + template <class T> struct is_scalar; @@ -124,7 +130,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/category/value_traits/properties.html b/doc/html/boost_typetraits/category/value_traits/properties.html index 8937070..a297ac5 100644 --- a/doc/html/boost_typetraits/category/value_traits/properties.html +++ b/doc/html/boost_typetraits/category/value_traits/properties.html @@ -2,7 +2,7 @@ General Type Properties - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -122,7 +122,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/category/value_traits/relate.html b/doc/html/boost_typetraits/category/value_traits/relate.html index 5b32633..bb94e7b 100644 --- a/doc/html/boost_typetraits/category/value_traits/relate.html +++ b/doc/html/boost_typetraits/category/value_traits/relate.html @@ -2,7 +2,7 @@ Relationships Between Two Types - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -60,7 +60,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/credits.html b/doc/html/boost_typetraits/credits.html index 90db097..e76de7d 100644 --- a/doc/html/boost_typetraits/credits.html +++ b/doc/html/boost_typetraits/credits.html @@ -2,7 +2,7 @@ Credits - + @@ -12,14 +12,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHome +PrevUpHome

@@ -72,7 +72,7 @@
-PrevUpHome +PrevUpHome
diff --git a/doc/html/boost_typetraits/examples.html b/doc/html/boost_typetraits/examples.html index 9fe1ebd..71ac2ef 100644 --- a/doc/html/boost_typetraits/examples.html +++ b/doc/html/boost_typetraits/examples.html @@ -2,7 +2,7 @@ Examples - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -52,7 +52,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/examples/copy.html b/doc/html/boost_typetraits/examples/copy.html index 30e8dde..6e98fc9 100644 --- a/doc/html/boost_typetraits/examples/copy.html +++ b/doc/html/boost_typetraits/examples/copy.html @@ -2,7 +2,7 @@ An Optimized Version of std::copy - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -89,7 +89,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/examples/destruct.html b/doc/html/boost_typetraits/examples/destruct.html index 8927818..8bfdc12 100644 --- a/doc/html/boost_typetraits/examples/destruct.html +++ b/doc/html/boost_typetraits/examples/destruct.html @@ -2,7 +2,7 @@ An Example that Omits Destructor Calls For Types with Trivial Destructors - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -76,7 +76,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/examples/fill.html b/doc/html/boost_typetraits/examples/fill.html index aff4671..e814038 100644 --- a/doc/html/boost_typetraits/examples/fill.html +++ b/doc/html/boost_typetraits/examples/fill.html @@ -2,7 +2,7 @@ An Optimised Version of std::fill - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -83,7 +83,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/examples/iter.html b/doc/html/boost_typetraits/examples/iter.html index 18ed7db..7e624a4 100644 --- a/doc/html/boost_typetraits/examples/iter.html +++ b/doc/html/boost_typetraits/examples/iter.html @@ -2,7 +2,7 @@ An improved Version of std::iter_swap - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -92,7 +92,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/examples/to_double.html b/doc/html/boost_typetraits/examples/to_double.html index 3beeffd..9aaa1d1 100644 --- a/doc/html/boost_typetraits/examples/to_double.html +++ b/doc/html/boost_typetraits/examples/to_double.html @@ -2,7 +2,7 @@ Convert Numeric Types and Enums to double - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -52,7 +52,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/history.html b/doc/html/boost_typetraits/history.html index 1468725..6c8baaf 100644 --- a/doc/html/boost_typetraits/history.html +++ b/doc/html/boost_typetraits/history.html @@ -2,7 +2,7 @@ History - + @@ -13,26 +13,26 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext
- + Boost 1.42.0
+ Fixed issue #3704. +

@@ -47,7 +47,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/intrinsics.html b/doc/html/boost_typetraits/intrinsics.html index 4c5b4a2..ee83992 100644 --- a/doc/html/boost_typetraits/intrinsics.html +++ b/doc/html/boost_typetraits/intrinsics.html @@ -2,7 +2,7 @@ Support for Compiler Intrinsics - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -38,16 +38,36 @@ for all types (but all have safe fallback positions if this support is unavailable):

The following traits classes can't be portably implemented in the C++ language, @@ -55,15 +75,23 @@ all the compilers we know about:

The following traits classes are dependent on one or more of the above:

The hooks for compiler-intrinsic support are defined in boost/type_traits/intrinsics.hpp, @@ -71,7 +99,7 @@ of the following macros:

-

Table 1.4. Macros for Compiler Intrinsics

+

Table 1.4. Macros for Compiler Intrinsics

@@ -79,230 +107,230 @@ +

+ BOOST_IS_UNION(T) +

+ +

+ Should evaluate to true if T is a union type +

+ +

+ BOOST_IS_POD(T) +

+ +

+ Should evaluate to true if T is a POD type +

+ +

+ BOOST_IS_EMPTY(T) +

+ +

+ Should evaluate to true if T is an empty struct or union +

+ +

+ BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) +

+ +

+ Should evaluate to true if the default constructor for T is trivial + (i.e. has no effect) +

+ +

+ BOOST_HAS_TRIVIAL_COPY(T) +

+ +

+ Should evaluate to true if T has a trivial copy constructor (and + can therefore be replaced by a call to memcpy) +

+ +

+ BOOST_HAS_TRIVIAL_ASSIGN(T) +

+ +

+ Should evaluate to true if T has a trivial assignment operator (and + can therefore be replaced by a call to memcpy) +

+ +

+ BOOST_HAS_TRIVIAL_DESTRUCTOR(T) +

+ +

+ Should evaluate to true if T has a trivial destructor (i.e. ~T() + has no effect) +

+ +

+ BOOST_HAS_NOTHROW_CONSTRUCTOR(T) +

+ +

+ Should evaluate to true if T + x; + can not throw +

+ +

+ BOOST_HAS_NOTHROW_COPY(T) +

+ +

+ Should evaluate to true if T(t) can not throw +

+ +

+ BOOST_HAS_NOTHROW_ASSIGN(T) +

+ +

+ Should evaluate to true if T + t, + u; + t = + u can not throw +

+ +

+ BOOST_HAS_VIRTUAL_DESTRUCTOR(T) +

+ +

+ Should evaluate to true T has a virtual destructor +

+ +

+ BOOST_IS_ABSTRACT(T) +

+ +

+ Should evaluate to true if T is an abstract type +

+ +

+ BOOST_IS_BASE_OF(T,U) +

+ +

+ Should evaluate to true if T is a base class of U +

+ +

+ BOOST_IS_CLASS(T) +

+ +

+ Should evaluate to true if T is a class type +

+ +

+ BOOST_IS_CONVERTIBLE(T,U) +

+ +

+ Should evaluate to true if T is convertible to U +

+ +

+ BOOST_IS_ENUM(T) +

+ +

+ Should evaluate to true is T is an enum +

+ +

+ BOOST_IS_POLYMORPHIC(T) +

+ +

+ Should evaluate to true if T is a polymorphic type +

+ +

+ BOOST_ALIGNMENT_OF(T) +

+ +

+ Should evaluate to the alignment requirements of type T. +

+
-

- BOOST_IS_UNION(T) -

-
-

- Should evaluate to true if T is a union type -

-
-

- BOOST_IS_POD(T) -

-
-

- Should evaluate to true if T is a POD type -

-
-

- BOOST_IS_EMPTY(T) -

-
-

- Should evaluate to true if T is an empty struct or union -

-
-

- BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) -

-
-

- Should evaluate to true if the default constructor for T is trivial (i.e. - has no effect) -

-
-

- BOOST_HAS_TRIVIAL_COPY(T) -

-
-

- Should evaluate to true if T has a trivial copy constructor (and can - therefore be replaced by a call to memcpy) -

-
-

- BOOST_HAS_TRIVIAL_ASSIGN(T) -

-
-

- Should evaluate to true if T has a trivial assignment operator (and can - therefore be replaced by a call to memcpy) -

-
-

- BOOST_HAS_TRIVIAL_DESTRUCTOR(T) -

-
-

- Should evaluate to true if T has a trivial destructor (i.e. ~T() has - no effect) -

-
-

- BOOST_HAS_NOTHROW_CONSTRUCTOR(T) -

-
-

- Should evaluate to true if T - x; - can not throw -

-
-

- BOOST_HAS_NOTHROW_COPY(T) -

-
-

- Should evaluate to true if T(t) can not throw -

-
-

- BOOST_HAS_NOTHROW_ASSIGN(T) -

-
-

- Should evaluate to true if T - t, - u; - t = - u can not throw -

-
-

- BOOST_HAS_VIRTUAL_DESTRUCTOR(T) -

-
-

- Should evaluate to true T has a virtual destructor -

-
-

- BOOST_IS_ABSTRACT(T) -

-
-

- Should evaluate to true if T is an abstract type -

-
-

- BOOST_IS_BASE_OF(T,U) -

-
-

- Should evaluate to true if T is a base class of U -

-
-

- BOOST_IS_CLASS(T) -

-
-

- Should evaluate to true if T is a class type -

-
-

- BOOST_IS_CONVERTIBLE(T,U) -

-
-

- Should evaluate to true if T is convertible to U -

-
-

- BOOST_IS_ENUM(T) -

-
-

- Should evaluate to true is T is an enum -

-
-

- BOOST_IS_POLYMORPHIC(T) -

-
-

- Should evaluate to true if T is a polymorphic type -

-
-

- BOOST_ALIGNMENT_OF(T) -

-
-

- Should evaluate to the alignment requirements of type T. -

-
@@ -322,7 +350,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/intro.html b/doc/html/boost_typetraits/intro.html index 706b67e..a708f6b 100644 --- a/doc/html/boost_typetraits/intro.html +++ b/doc/html/boost_typetraits/intro.html @@ -2,7 +2,7 @@ Introduction - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -59,7 +59,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/mpl.html b/doc/html/boost_typetraits/mpl.html index d165a7e..b54a5af 100644 --- a/doc/html/boost_typetraits/mpl.html +++ b/doc/html/boost_typetraits/mpl.html @@ -2,7 +2,7 @@ MPL Interoperability - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -56,7 +56,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference.html b/doc/html/boost_typetraits/reference.html index 7bb8ed0..8bd4ae8 100644 --- a/doc/html/boost_typetraits/reference.html +++ b/doc/html/boost_typetraits/reference.html @@ -2,7 +2,7 @@ Alphabetical Reference - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -71,6 +71,7 @@
is_function
is_fundamental
is_integral
+
is_lvalue_reference
is_member_function_pointer
@@ -80,11 +81,12 @@
is_pod
is_pointer
is_polymorphic
+
is_reference
+
is_rvalue_reference
is_same
is_scalar
is_signed
is_stateless
-
is_reference
is_union
is_unsigned
is_virtual_base_of
@@ -117,7 +119,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/add_const.html b/doc/html/boost_typetraits/reference/add_const.html index 2060fc7..d09f5a8 100644 --- a/doc/html/boost_typetraits/reference/add_const.html +++ b/doc/html/boost_typetraits/reference/add_const.html @@ -2,7 +2,7 @@ add_const - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.5. Examples

+

Table 1.5. Examples

@@ -61,65 +61,65 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ add_const<int>::type +

+ +

+ int const +

+ +

+ add_const<int&>::type +

+ +

+ int& +

+ +

+ add_const<int*>::type +

+ +

+ int* + const +

+ +

+ add_const<int const>::type +

+ +

+ int const +

+
-

- Expression -

-
-

- Result Type -

-
-

- add_const<int>::type -

-
-

- int const -

-
-

- add_const<int&>::type -

-
-

- int& -

-
-

- add_const<int*>::type -

-
-

- int* - const -

-
-

- add_const<int const>::type -

-
-

- int const -

-
@@ -139,7 +139,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/add_cv.html b/doc/html/boost_typetraits/reference/add_cv.html index ac1f5a3..b8c67e9 100644 --- a/doc/html/boost_typetraits/reference/add_cv.html +++ b/doc/html/boost_typetraits/reference/add_cv.html @@ -2,7 +2,7 @@ add_cv - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.6. Examples

+

Table 1.6. Examples

@@ -62,67 +62,67 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ add_cv<int>::type +

+ +

+ int const + volatile +

+ +

+ add_cv<int&>::type +

+ +

+ int& +

+ +

+ add_cv<int*>::type +

+ +

+ int* + const volatile +

+ +

+ add_cv<int const>::type +

+ +

+ int const + volatile +

+
-

- Expression -

-
-

- Result Type -

-
-

- add_cv<int>::type -

-
-

- int const - volatile -

-
-

- add_cv<int&>::type -

-
-

- int& -

-
-

- add_cv<int*>::type -

-
-

- int* - const volatile -

-
-

- add_cv<int const>::type -

-
-

- int const - volatile -

-
@@ -142,7 +142,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/add_pointer.html b/doc/html/boost_typetraits/reference/add_pointer.html index 27b20a0..d0dc175 100644 --- a/doc/html/boost_typetraits/reference/add_pointer.html +++ b/doc/html/boost_typetraits/reference/add_pointer.html @@ -2,7 +2,7 @@ add_pointer - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.7. Examples

+

Table 1.7. Examples

@@ -64,64 +64,64 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ add_pointer<int>::type +

+ +

+ int* +

+ +

+ add_pointer<int const&>::type +

+ +

+ int const* +

+ +

+ add_pointer<int*>::type +

+ +

+ int** +

+ +

+ add_pointer<int*&>::type +

+ +

+ int** +

+
-

- Expression -

-
-

- Result Type -

-
-

- add_pointer<int>::type -

-
-

- int* -

-
-

- add_pointer<int const&>::type -

-
-

- int const* -

-
-

- add_pointer<int*>::type -

-
-

- int** -

-
-

- add_pointer<int*&>::type -

-
-

- int** -

-
@@ -141,7 +141,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/add_reference.html b/doc/html/boost_typetraits/reference/add_reference.html index 93415cd..b7e9d36 100644 --- a/doc/html/boost_typetraits/reference/add_reference.html +++ b/doc/html/boost_typetraits/reference/add_reference.html @@ -2,7 +2,7 @@ add_reference - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.8. Examples

+

Table 1.8. Examples

@@ -61,64 +61,64 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ add_reference<int>::type +

+ +

+ int& +

+ +

+ add_reference<int const&>::type +

+ +

+ int const& +

+ +

+ add_reference<int*>::type +

+ +

+ int*& +

+ +

+ add_reference<int*&>::type +

+ +

+ int*& +

+
-

- Expression -

-
-

- Result Type -

-
-

- add_reference<int>::type -

-
-

- int& -

-
-

- add_reference<int const&>::type -

-
-

- int const& -

-
-

- add_reference<int*>::type -

-
-

- int*& -

-
-

- add_reference<int*&>::type -

-
-

- int*& -

-
@@ -138,7 +138,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/add_volatile.html b/doc/html/boost_typetraits/reference/add_volatile.html index 589b79b..843247e 100644 --- a/doc/html/boost_typetraits/reference/add_volatile.html +++ b/doc/html/boost_typetraits/reference/add_volatile.html @@ -2,7 +2,7 @@ add_volatile - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.9. Examples

+

Table 1.9. Examples

@@ -61,66 +61,66 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ add_volatile<int>::type +

+ +

+ int volatile +

+ +

+ add_volatile<int&>::type +

+ +

+ int& +

+ +

+ add_volatile<int*>::type +

+ +

+ int* + volatile +

+ +

+ add_volatile<int const>::type +

+ +

+ int const + volatile +

+
-

- Expression -

-
-

- Result Type -

-
-

- add_volatile<int>::type -

-
-

- int volatile -

-
-

- add_volatile<int&>::type -

-
-

- int& -

-
-

- add_volatile<int*>::type -

-
-

- int* - volatile -

-
-

- add_volatile<int const>::type -

-
-

- int const - volatile -

-
@@ -140,7 +140,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/aligned_storage.html b/doc/html/boost_typetraits/reference/aligned_storage.html index 92bde02..5b825ae 100644 --- a/doc/html/boost_typetraits/reference/aligned_storage.html +++ b/doc/html/boost_typetraits/reference/aligned_storage.html @@ -2,7 +2,7 @@ aligned_storage - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -56,7 +56,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/alignment_of.html b/doc/html/boost_typetraits/reference/alignment_of.html index 48efa8a..5d919bd 100644 --- a/doc/html/boost_typetraits/reference/alignment_of.html +++ b/doc/html/boost_typetraits/reference/alignment_of.html @@ -2,7 +2,7 @@ alignment_of - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -48,44 +48,20 @@

Examples:

-
-

-

-

- alignment_of<int> - inherits from integral_constant<std::size_t, ALIGNOF(int)>. -

-

-

-
-
-

-

-

- alignment_of<char>::type is the type integral_constant<std::size_t, ALIGNOF(char)>. -

-

-

-
-
-

-

-

- alignment_of<double>::value is an integral constant expression - with value ALIGNOF(double). -

-

-

-
-
-

-

-

- alignment_of<T>::value_type is the type std::size_t. -

-

-

-
+

+ alignment_of<int> + inherits from integral_constant<std::size_t, ALIGNOF(int)>. +

+

+ alignment_of<char>::type is the type integral_constant<std::size_t, ALIGNOF(char)>. +

+

+ alignment_of<double>::value is an integral constant expression + with value ALIGNOF(double). +

+

+ alignment_of<T>::value_type is the type std::size_t. +

@@ -100,7 +76,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/decay.html b/doc/html/boost_typetraits/reference/decay.html index 6abe8d6..93fcd7b 100644 --- a/doc/html/boost_typetraits/reference/decay.html +++ b/doc/html/boost_typetraits/reference/decay.html @@ -2,7 +2,7 @@ decay - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.10. Examples

+

Table 1.10. Examples

@@ -56,76 +56,76 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ decay<int[2][3]>::type +

+ +

+ int[3]* +

+ +

+ decay<int(&)[2]>::type +

+ +

+ int* +

+ +

+ decay<int(&)(double)>::type +

+ +

+ int(*)(double) +

+ +

+ int(*)(double +

+ +

+ int(*)(double) +

+ +

+ int(double) +

+ +

+ int(*)(double) +

+
-

- Expression -

-
-

- Result Type -

-
-

- decay<int[2][3]>::type -

-
-

- int[3]* -

-
-

- decay<int(&)[2]>::type -

-
-

- int* -

-
-

- decay<int(&)(double)>::type -

-
-

- int(*)(double) -

-
-

- int(*)(double -

-
-

- int(*)(double) -

-
-

- int(double) -

-
-

- int(*)(double) -

-
@@ -145,7 +145,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/extent.html b/doc/html/boost_typetraits/reference/extent.html index 97607d2..4a6b196 100644 --- a/doc/html/boost_typetraits/reference/extent.html +++ b/doc/html/boost_typetraits/reference/extent.html @@ -2,7 +2,7 @@ extent - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -49,105 +49,45 @@

Examples:

-
-

-

-

- extent<int[1]> inherits from integral_constant<std::size_t, 1>. -

-

-

-
-
-

-

-

- extent<double[2][3][4], - 0>::type is the type integral_constant<std::size_t, 2>. -

-

-

-
-
-

-

-

- extent<double[2][3][4], - 1>::type is the type integral_constant<std::size_t, 3>. -

-

-

-
-
-

-

-

- extent<double[2][3][4], - 3>::type is the type integral_constant<std::size_t, 4>. -

-

-

-
-
-

-

-

- extent<int[4]>::value - is an integral constant expression that evaluates to 4. -

-

-

-
-
-

-

-

- extent<int[][2]>::value is an integral constant expression - that evaluates to 0. -

-

-

-
-
-

-

-

- extent<int[][2], 1>::value - is an integral constant expression that evaluates to 2. -

-

-

-
-
-

-

-

- extent<int*>::value is an integral constant expression - that evaluates to 0. -

-

-

-
-
-

-

-

- extent<boost::array<int, 3> >::value - is an integral constant expression that evaluates to 0: - boost::array is a class type and not an array type! -

-

-

-
-
-

-

-

- extent<T>::value_type is the type std::size_t. -

-

-

-
+

+ extent<int[1]> inherits from integral_constant<std::size_t, 1>. +

+

+ extent<double[2][3][4], + 0>::type is the type integral_constant<std::size_t, 2>. +

+

+ extent<double[2][3][4], + 1>::type is the type integral_constant<std::size_t, 3>. +

+

+ extent<double[2][3][4], + 3>::type is the type integral_constant<std::size_t, 4>. +

+

+ extent<int[4]>::value + is an integral constant expression that evaluates to 4. +

+

+ extent<int[][2]>::value + is an integral constant expression that evaluates to 0. +

+

+ extent<int[][2], 1>::value is an integral constant expression + that evaluates to 2. +

+

+ extent<int*>::value is an integral constant expression + that evaluates to 0. +

+

+ extent<boost::array<int, 3> >::value is an integral constant expression + that evaluates to 0: boost::array + is a class type and not an array type! +

+

+ extent<T>::value_type is the type std::size_t. +

@@ -162,7 +102,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 98b454a..aa2c108 100644 --- a/doc/html/boost_typetraits/reference/floating_point_promotion.html +++ b/doc/html/boost_typetraits/reference/floating_point_promotion.html @@ -2,7 +2,7 @@ floating_point_promotion - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.11. Examples

+

Table 1.11. Examples

@@ -57,53 +57,53 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ floating_point_promotion<float + const>::type +

+ +

+ double const +

+ +

+ floating_point_promotion<float&>::type +

+ +

+ float& +

+ +

+ floating_point_promotion<short>::type +

+ +

+ short +

+
-

- Expression -

-
-

- Result Type -

-
-

- floating_point_promotion<float - const>::type -

-
-

- double const -

-
-

- floating_point_promotion<float&>::type -

-
-

- float& -

-
-

- floating_point_promotion<short>::type -

-
-

- short -

-
@@ -123,7 +123,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/function_traits.html b/doc/html/boost_typetraits/reference/function_traits.html index e22ca2b..019d9f6 100644 --- a/doc/html/boost_typetraits/reference/function_traits.html +++ b/doc/html/boost_typetraits/reference/function_traits.html @@ -2,7 +2,7 @@ function_traits - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -39,17 +39,17 @@

  • - The compiler supports partial specialization of class templates. -
  • + The compiler supports partial specialization of class templates. +
  • - The template argument F - is a function type, note that this is not the same thing as a pointer - to a function. -
  • + The template argument F + is a function type, note that this is not the same thing as a pointer + to a function. +
- +
[Tip][Tip] Tip

@@ -59,7 +59,7 @@

-

Table 1.12. Function Traits Members

+

Table 1.12. Function Traits Members

@@ -67,62 +67,62 @@ +

+ Member +

+ +

+ Description +

+ +

+ function_traits<F>::arity +

+ +

+ An integral constant expression that gives the number of arguments + accepted by the function type F. +

+ +

+ function_traits<F>::result_type +

+ +

+ The type returned by function type F. +

+ +

+ function_traits<F>::argN_type +

+ +

+ The Nth argument type of function type F, + where 1 <= + N <= + arity of F. +

+
-

- Member -

-
-

- Description -

-
-

- function_traits<F>::arity -

-
-

- An integral constant expression that gives the number of arguments - accepted by the function type F. -

-
-

- function_traits<F>::result_type -

-
-

- The type returned by function type F. -

-
-

- function_traits<F>::argN_type -

-
-

- The Nth argument type of function type F, - where 1 <= - N <= - arity of F. -

-

-

Table 1.13. Examples

+

Table 1.13. Examples

@@ -130,126 +130,135 @@ +

+ Expression +

+ +

+ Result +

+ +

+ function_traits<void + (void)>::arity +

+ +

+ An integral constant expression that has the value 0. +

+ +

+ function_traits<long + (int)>::arity +

+ +

+ An integral constant expression that has the value 1. +

+ +

+ function_traits<long + (int, long, double, void*)>::arity +

+ +

+ An integral constant expression that has the value 4. +

+ +

+ function_traits<void + (void)>::result_type +

+ +

+ The type void. +

+ +

+ function_traits<long + (int)>::result_type +

+ +

+ The type long. +

+ +

+ function_traits<long + (int)>::arg1_type +

+ +

+ The type int. +

+ +

+ function_traits<long + (int, long, double, void*)>::arg4_type +

+ +

+ The type void*. +

+ +

+ function_traits<long + (int, long, double, void*)>::arg5_type +

+ +

+ A compiler error: there is no arg5_type + since there are only four arguments. +

+ +

+ function_traits<long + (*)(void)>::arity +

+ +

+ A compiler error: argument type is a function pointer, + and not a function type. +

+
-

- Expression -

-
-

- Result -

-
-

- function_traits<void (void)>::arity -

-
-

- An integral constant expression that has the value 0. -

-
-

- function_traits<long (int)>::arity -

-
-

- An integral constant expression that has the value 1. -

-
-

- function_traits<long (int, long, double, void*)>::arity -

-
-

- An integral constant expression that has the value 4. -

-
-

- function_traits<void (void)>::result_type -

-
-

- The type void. -

-
-

- function_traits<long (int)>::result_type -

-
-

- The type long. -

-
-

- function_traits<long (int)>::arg1_type -

-
-

- The type int. -

-
-

- function_traits<long (int, long, double, void*)>::arg4_type -

-
-

- The type void*. -

-
-

- function_traits<long (int, long, double, void*)>::arg5_type -

-
-

- A compiler error: there is no arg5_type - since there are only four arguments. -

-
-

- function_traits<long (*)(void)>::arity -

-
-

- A compiler error: argument type is a function pointer, - and not a function type. -

-
@@ -269,7 +278,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_new_operator.html b/doc/html/boost_typetraits/reference/has_new_operator.html index 3861528..b7f9f2f 100644 --- a/doc/html/boost_typetraits/reference/has_new_operator.html +++ b/doc/html/boost_typetraits/reference/has_new_operator.html @@ -2,7 +2,7 @@ has_new_operator - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -64,66 +64,30 @@

Then:

-
-

-

-

- has_new_operator<A> - inherits from true_type. -

-

-

-
-
-

-

-

- has_new_operator<B> - inherits from true_type. -

-

-

-
-
-

-

-

- has_new_operator<C> - inherits from true_type. -

-

-

-
-
-

-

-

- has_new_operator<D> - inherits from true_type. -

-

-

-
-
-

-

-

- has_new_operator<E> - inherits from true_type. -

-

-

-
-
-

-

-

- has_new_operator<F> - inherits from true_type. -

-

-

-
+

+ has_new_operator<A> + inherits from true_type. +

+

+ has_new_operator<B> + inherits from true_type. +

+

+ has_new_operator<C> + inherits from true_type. +

+

+ has_new_operator<D> + inherits from true_type. +

+

+ has_new_operator<E> + inherits from true_type. +

+

+ has_new_operator<F> + inherits from true_type. +

@@ -138,7 +102,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_no_throw_def_cons.html b/doc/html/boost_typetraits/reference/has_no_throw_def_cons.html index fcb4c56..ecabc41 100644 --- a/doc/html/boost_typetraits/reference/has_no_throw_def_cons.html +++ b/doc/html/boost_typetraits/reference/has_no_throw_def_cons.html @@ -2,7 +2,7 @@ has_nothrow_default_constructor - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -43,7 +43,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_nothrow_assign.html b/doc/html/boost_typetraits/reference/has_nothrow_assign.html index e5156c0..624cc24 100644 --- a/doc/html/boost_typetraits/reference/has_nothrow_assign.html +++ b/doc/html/boost_typetraits/reference/has_nothrow_assign.html @@ -2,7 +2,7 @@ has_nothrow_assign - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -67,7 +67,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_nothrow_constructor.html b/doc/html/boost_typetraits/reference/has_nothrow_constructor.html index 98a4e39..10bd727 100644 --- a/doc/html/boost_typetraits/reference/has_nothrow_constructor.html +++ b/doc/html/boost_typetraits/reference/has_nothrow_constructor.html @@ -2,7 +2,7 @@ has_nothrow_constructor - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -74,7 +74,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_nothrow_copy.html b/doc/html/boost_typetraits/reference/has_nothrow_copy.html index c286086..a8f889f 100644 --- a/doc/html/boost_typetraits/reference/has_nothrow_copy.html +++ b/doc/html/boost_typetraits/reference/has_nothrow_copy.html @@ -2,7 +2,7 @@ has_nothrow_copy - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -73,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 ebf0478..60b53b7 100644 --- a/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html +++ b/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html @@ -2,7 +2,7 @@ has_nothrow_copy_constructor - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -43,7 +43,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 5ef54f8..10a7faa 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_assign.html +++ b/doc/html/boost_typetraits/reference/has_trivial_assign.html @@ -2,7 +2,7 @@ has_trivial_assign - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -62,54 +62,24 @@

Examples:

-
-

-

-

- has_trivial_assign<int> - inherits from true_type. -

-

-

-
-
-

-

-

- has_trivial_assign<char*>::type is the type true_type. -

-

-

-
-
-

-

-

- has_trivial_assign<int (*)(long)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- has_trivial_assign<MyClass>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- has_trivial_assign<T>::value_type is the type bool. -

-

-

-
+

+ has_trivial_assign<int> + inherits from true_type. +

+

+ has_trivial_assign<char*>::type is the type true_type. +

+

+ has_trivial_assign<int (*)(long)>::value is an integral constant expression + that evaluates to true. +

+

+ has_trivial_assign<MyClass>::value is an integral constant expression + that evaluates to false. +

+

+ has_trivial_assign<T>::value_type is the type bool. +

@@ -124,7 +94,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_trivial_constructor.html b/doc/html/boost_typetraits/reference/has_trivial_constructor.html index 9434743..9ad3915 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_constructor.html +++ b/doc/html/boost_typetraits/reference/has_trivial_constructor.html @@ -2,7 +2,7 @@ has_trivial_constructor - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -71,55 +71,25 @@

Examples:

-
-

-

-

- has_trivial_constructor<int> inherits from true_type. -

-

-

-
-
-

-

-

- has_trivial_constructor<char*>::type - is the type true_type. -

-

-

-
-
-

-

-

- has_trivial_constructor<int (*)(long)>::value - is an integral constant expression that evaluates to true. -

-

-

-
-
-

-

-

- has_trivial_constructor<MyClass>::value - is an integral constant expression that evaluates to false. -

-

-

-
-
-

-

-

- has_trivial_constructor<T>::value_type - is the type bool. -

-

-

-
+

+ has_trivial_constructor<int> inherits from true_type. +

+

+ has_trivial_constructor<char*>::type + is the type true_type. +

+

+ has_trivial_constructor<int (*)(long)>::value + is an integral constant expression that evaluates to true. +

+

+ has_trivial_constructor<MyClass>::value + is an integral constant expression that evaluates to false. +

+

+ has_trivial_constructor<T>::value_type + is the type bool. +

@@ -134,7 +104,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_trivial_copy.html b/doc/html/boost_typetraits/reference/has_trivial_copy.html index 61e010f..a792521 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_copy.html +++ b/doc/html/boost_typetraits/reference/has_trivial_copy.html @@ -2,7 +2,7 @@ has_trivial_copy - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -68,54 +68,24 @@

Examples:

-
-

-

-

- has_trivial_copy<int> - inherits from true_type. -

-

-

-
-
-

-

-

- has_trivial_copy<char*>::type is the type true_type. -

-

-

-
-
-

-

-

- has_trivial_copy<int (*)(long)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- has_trivial_copy<MyClass>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- has_trivial_copy<T>::value_type is the type bool. -

-

-

-
+

+ has_trivial_copy<int> + inherits from true_type. +

+

+ has_trivial_copy<char*>::type is the type true_type. +

+

+ has_trivial_copy<int (*)(long)>::value is an integral constant expression + that evaluates to true. +

+

+ has_trivial_copy<MyClass>::value is an integral constant expression + that evaluates to false. +

+

+ has_trivial_copy<T>::value_type is the type bool. +

@@ -130,7 +100,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_trivial_cp_cons.html b/doc/html/boost_typetraits/reference/has_trivial_cp_cons.html index 717423d..32af170 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_cp_cons.html +++ b/doc/html/boost_typetraits/reference/has_trivial_cp_cons.html @@ -2,7 +2,7 @@ has_trivial_copy_constructor - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -43,7 +43,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_trivial_def_cons.html b/doc/html/boost_typetraits/reference/has_trivial_def_cons.html index ca7360e..4f36cf8 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_def_cons.html +++ b/doc/html/boost_typetraits/reference/has_trivial_def_cons.html @@ -2,7 +2,7 @@ has_trivial_default_constructor - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -43,7 +43,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_trivial_destructor.html b/doc/html/boost_typetraits/reference/has_trivial_destructor.html index eba6097..01c3ddf 100644 --- a/doc/html/boost_typetraits/reference/has_trivial_destructor.html +++ b/doc/html/boost_typetraits/reference/has_trivial_destructor.html @@ -2,7 +2,7 @@ has_trivial_destructor - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -64,55 +64,25 @@

Examples:

-
-

-

-

- has_trivial_destructor<int> inherits from true_type. -

-

-

-
-
-

-

-

- has_trivial_destructor<char*>::type - is the type true_type. -

-

-

-
-
-

-

-

- has_trivial_destructor<int (*)(long)>::value - is an integral constant expression that evaluates to true. -

-

-

-
-
-

-

-

- has_trivial_destructor<MyClass>::value - is an integral constant expression that evaluates to false. -

-

-

-
-
-

-

-

- has_trivial_destructor<T>::value_type - is the type bool. -

-

-

-
+

+ has_trivial_destructor<int> inherits from true_type. +

+

+ has_trivial_destructor<char*>::type + is the type true_type. +

+

+ has_trivial_destructor<int (*)(long)>::value + is an integral constant expression that evaluates to true. +

+

+ has_trivial_destructor<MyClass>::value + is an integral constant expression that evaluates to false. +

+

+ has_trivial_destructor<T>::value_type + is the type bool. +

@@ -127,7 +97,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/has_virtual_destructor.html b/doc/html/boost_typetraits/reference/has_virtual_destructor.html index b7f5499..9ad7b85 100644 --- a/doc/html/boost_typetraits/reference/has_virtual_destructor.html +++ b/doc/html/boost_typetraits/reference/has_virtual_destructor.html @@ -2,7 +2,7 @@ has_virtual_destructor - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -66,7 +66,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/integral_constant.html b/doc/html/boost_typetraits/reference/integral_constant.html index 9a27a10..4abe844 100644 --- a/doc/html/boost_typetraits/reference/integral_constant.html +++ b/doc/html/boost_typetraits/reference/integral_constant.html @@ -2,7 +2,7 @@ integral_constant - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -58,7 +58,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/integral_promotion.html b/doc/html/boost_typetraits/reference/integral_promotion.html index 66d27d2..fb99c25 100644 --- a/doc/html/boost_typetraits/reference/integral_promotion.html +++ b/doc/html/boost_typetraits/reference/integral_promotion.html @@ -2,7 +2,7 @@ integral_promotion - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.14. Examples

+

Table 1.14. Examples

@@ -57,53 +57,54 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ integral_promotion<short + const>::type +

+ +

+ int const +

+ +

+ integral_promotion<short&>::type +

+ +

+ short& +

+ +

+ integral_promotion<enum + std::float_round_style>::type +

+ +

+ int +

+
-

- Expression -

-
-

- Result Type -

-
-

- integral_promotion<short - const>::type -

-
-

- int const -

-
-

- integral_promotion<short&>::type -

-
-

- short& -

-
-

- integral_promotion<enum std::float_round_style>::type -

-
-

- int -

-
@@ -123,7 +124,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_abstract.html b/doc/html/boost_typetraits/reference/is_abstract.html index b78f54f..5b1c59f 100644 --- a/doc/html/boost_typetraits/reference/is_abstract.html +++ b/doc/html/boost_typetraits/reference/is_abstract.html @@ -2,7 +2,7 @@ is_abstract - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -55,53 +55,23 @@

Examples:

-
-

-

-

- Given: class abc{ virtual ~abc() = 0; }; -

-

-

-
-
-

-

-

- is_abstract<abc> - inherits from true_type. -

-

-

-
-
-

-

-

- is_abstract<abc>::type is the type true_type. -

-

-

-
-
-

-

-

- is_abstract<abc const>::value - is an integral constant expression that evaluates to true. -

-

-

-
-
-

-

-

- is_abstract<T>::value_type is the type bool. -

-

-

-
+

+ Given: class abc{ virtual ~abc() = 0; }; +

+

+ is_abstract<abc> + inherits from true_type. +

+

+ is_abstract<abc>::type is the type true_type. +

+

+ is_abstract<abc const>::value + is an integral constant expression that evaluates to true. +

+

+ is_abstract<T>::value_type is the type bool. +

@@ -116,7 +86,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_arithmetic.html b/doc/html/boost_typetraits/reference/is_arithmetic.html index 1662e67..456fd03 100644 --- a/doc/html/boost_typetraits/reference/is_arithmetic.html +++ b/doc/html/boost_typetraits/reference/is_arithmetic.html @@ -2,7 +2,7 @@ is_arithmetic - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -47,44 +47,20 @@

Examples:

-
-

-

-

- is_arithmetic<int> - inherits from true_type. -

-

-

-
-
-

-

-

- is_arithmetic<char>::type is the type true_type. -

-

-

-
-
-

-

-

- is_arithmetic<double>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_arithmetic<T>::value_type is the type bool. -

-

-

-
+

+ is_arithmetic<int> + inherits from true_type. +

+

+ is_arithmetic<char>::type is the type true_type. +

+

+ is_arithmetic<double>::value is an integral constant expression + that evaluates to true. +

+

+ is_arithmetic<T>::value_type is the type bool. +

@@ -99,7 +75,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_array.html b/doc/html/boost_typetraits/reference/is_array.html index aa3c229..5609d23 100644 --- a/doc/html/boost_typetraits/reference/is_array.html +++ b/doc/html/boost_typetraits/reference/is_array.html @@ -2,7 +2,7 @@ is_array - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -50,44 +50,19 @@

Examples:

-
-

-

-

- is_array<int[2]> inherits from true_type. -

-

-

-
-
-

-

-

- is_array<char[2][3]>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_array<double[]>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_array<T>::value_type is the type bool. -

-

-

-
+

+ is_array<int[2]> inherits from true_type. +

+

+ is_array<char[2][3]>::type is the type true_type. +

+

+ is_array<double[]>::value is an integral constant expression + that evaluates to true. +

+

+ is_array<T>::value_type is the type bool. +

@@ -102,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 24b4bc6..35a2fb0 100644 --- a/doc/html/boost_typetraits/reference/is_base_of.html +++ b/doc/html/boost_typetraits/reference/is_base_of.html @@ -2,7 +2,7 @@ is_base_of - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -68,65 +68,29 @@

Examples:

-
-

-

-

- Given: class Base{}; class Derived : - public Base{}; -

-

-

-
-
-

-

-

- is_base_of<Base, Derived> - inherits from true_type. -

-

-

-
-
-

-

-

- is_base_of<Base, Derived>::type is the type true_type. -

-

-

-
-
-

-

-

- is_base_of<Base, Derived>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_base_of<Base, Base>::value is an integral constant expression - that evaluates to true: a class is regarded as it's - own base. -

-

-

-
-
-

-

-

- is_base_of<T, T>::value_type is the type bool. -

-

-

-
+

+ Given: class Base{}; class Derived : public Base{}; +

+

+ is_base_of<Base, Derived> + inherits from true_type. +

+

+ is_base_of<Base, Derived>::type is the type true_type. +

+

+ is_base_of<Base, Derived>::value is an integral constant expression + that evaluates to true. +

+

+ is_base_of<Base, Base>::value is an integral constant expression + that evaluates to true: a class is regarded as it's + own base. +

+

+ is_base_of<T, T>::value_type + is the type bool. +

@@ -141,7 +105,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_class.html b/doc/html/boost_typetraits/reference/is_class.html index e812fa8..2880f0c 100644 --- a/doc/html/boost_typetraits/reference/is_class.html +++ b/doc/html/boost_typetraits/reference/is_class.html @@ -2,7 +2,7 @@ is_class - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -53,74 +53,32 @@

Examples:

-
-

-

-

- Given: class MyClass; then: -

-

-

-
-
-

-

-

- is_class<MyClass> - inherits from true_type. -

-

-

-
-
-

-

-

- is_class<MyClass const>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_class<MyClass>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_class<MyClass&>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_class<MyClass*>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_class<T>::value_type is the type bool. -

-

-

-
+

+ Given: class MyClass; then: +

+

+ is_class<MyClass> + inherits from true_type. +

+

+ is_class<MyClass const>::type + is the type true_type. +

+

+ is_class<MyClass>::value is an integral constant expression + that evaluates to true. +

+

+ is_class<MyClass&>::value is an integral constant expression + that evaluates to false. +

+

+ is_class<MyClass*>::value is an integral constant expression + that evaluates to false. +

+

+ is_class<T>::value_type is the type bool. +

@@ -135,7 +93,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_complex.html b/doc/html/boost_typetraits/reference/is_complex.html index b93df08..9ff50c0 100644 --- a/doc/html/boost_typetraits/reference/is_complex.html +++ b/doc/html/boost_typetraits/reference/is_complex.html @@ -2,7 +2,7 @@ is_complex - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -57,7 +57,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_compound.html b/doc/html/boost_typetraits/reference/is_compound.html index 10cd6f8..aefa489 100644 --- a/doc/html/boost_typetraits/reference/is_compound.html +++ b/doc/html/boost_typetraits/reference/is_compound.html @@ -2,7 +2,7 @@ is_compound - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -46,64 +46,28 @@

Examples:

-
-

-

-

- is_compound<MyClass> - inherits from true_type. -

-

-

-
-
-

-

-

- is_compound<MyEnum>::type is the type true_type. -

-

-

-
-
-

-

-

- is_compound<int*>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_compound<int&>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_compound<int>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_compound<T>::value_type is the type bool. -

-

-

-
+

+ is_compound<MyClass> + inherits from true_type. +

+

+ is_compound<MyEnum>::type is the type true_type. +

+

+ is_compound<int*>::value is an integral constant expression + that evaluates to true. +

+

+ is_compound<int&>::value is an integral constant expression + that evaluates to true. +

+

+ is_compound<int>::value is an integral constant expression + that evaluates to false. +

+

+ is_compound<T>::value_type is the type bool. +

@@ -118,7 +82,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_const.html b/doc/html/boost_typetraits/reference/is_const.html index 4afb4b0..50bb6c9 100644 --- a/doc/html/boost_typetraits/reference/is_const.html +++ b/doc/html/boost_typetraits/reference/is_const.html @@ -2,7 +2,7 @@ is_const - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -45,75 +45,33 @@

Examples:

-
-

-

-

- is_const<int const> inherits from true_type. -

-

-

-
-
-

-

-

- is_const<int const volatile>::type is the type true_type. -

-

-

-
-
-

-

-

- is_const<int* const>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_const<int const*>::value - is an integral constant expression that evaluates to false: - the const-qualifier is not at the top level in this case. -

-

-

-
-
-

-

-

- is_const<int const&>::value - is an integral constant expression that evaluates to false: - the const-qualifier is not at the top level in this case. -

-

-

-
-
-

-

-

- is_const<int>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_const<T>::value_type is the type bool. -

-

-

-
+

+ is_const<int const> inherits from true_type. +

+

+ is_const<int const volatile>::type is the type true_type. +

+

+ is_const<int* const>::value + is an integral constant expression that evaluates to true. +

+

+ is_const<int const*>::value + is an integral constant expression that evaluates to false: + the const-qualifier is not at the top level in this case. +

+

+ is_const<int const&>::value + is an integral constant expression that evaluates to false: + the const-qualifier is not at the top level in this case. +

+

+ is_const<int>::value is an integral constant expression + that evaluates to false. +

+

+ is_const<T>::value_type is the type bool. +

@@ -128,7 +86,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_convertible.html b/doc/html/boost_typetraits/reference/is_convertible.html index 9fb3abd..c042fd5 100644 --- a/doc/html/boost_typetraits/reference/is_convertible.html +++ b/doc/html/boost_typetraits/reference/is_convertible.html @@ -2,7 +2,7 @@ is_convertible - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -84,76 +84,34 @@

Examples:

-
-

-

-

- is_convertible<int, double> - inherits from true_type. -

-

-

-
-
-

-

-

- is_convertible<const int, double>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_convertible<int* const, int*>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_convertible<int const*, int*>::value - is an integral constant expression that evaluates to false: - the conversion would require a const_cast. -

-

-

-
-
-

-

-

- is_convertible<int const&, long>::value - is an integral constant expression that evaluates to true. -

-

-

-
-
-

-

-

- is_convertible<int, int>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_convertible<T, T>::value_type is the type bool. -

-

-

-
+

+ is_convertible<int, double> inherits from true_type. +

+

+ is_convertible<const int, double>::type + is the type true_type. +

+

+ is_convertible<int* const, int*>::value is an integral constant expression + that evaluates to true. +

+

+ is_convertible<int const*, int*>::value is an integral constant expression + that evaluates to false: the conversion would require + a const_cast. +

+

+ is_convertible<int const&, long>::value + is an integral constant expression that evaluates to true. +

+

+ is_convertible<int, int>::value + is an integral constant expression that evaluates to false. +

+

+ is_convertible<T, T>::value_type + is the type bool. +

@@ -168,7 +126,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_empty.html b/doc/html/boost_typetraits/reference/is_empty.html index 601e395..9503f7d 100644 --- a/doc/html/boost_typetraits/reference/is_empty.html +++ b/doc/html/boost_typetraits/reference/is_empty.html @@ -2,7 +2,7 @@ is_empty - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -48,12 +48,12 @@

  • - the compiler implementing zero sized empty base classes, or -
  • + the compiler implementing zero sized empty base classes, or +
  • - the compiler providing intrinsics - to detect empty classes. -
  • + the compiler providing intrinsics + to detect empty classes. +

Can not be used with incomplete types. @@ -68,55 +68,25 @@

Examples:

-
-

-

-

- Given: struct empty_class - {}; -

-

-

-
-
-

-

-

- is_empty<empty_class> - inherits from true_type. -

-

-

-
-
-

-

-

- is_empty<empty_class const>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_empty<empty_class>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_empty<T>::value_type is the type bool. -

-

-

-
+

+ Given: struct empty_class + {}; +

+

+ is_empty<empty_class> + inherits from true_type. +

+

+ is_empty<empty_class const>::type + is the type true_type. +

+

+ is_empty<empty_class>::value is an integral constant expression + that evaluates to true. +

+

+ is_empty<T>::value_type is the type bool. +

@@ -131,7 +101,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_enum.html b/doc/html/boost_typetraits/reference/is_enum.html index c5a5bf1..2269e46 100644 --- a/doc/html/boost_typetraits/reference/is_enum.html +++ b/doc/html/boost_typetraits/reference/is_enum.html @@ -2,7 +2,7 @@ is_enum - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -52,75 +52,33 @@

Examples:

-
-

-

-

- Given: enum my_enum - { one, two }; -

-

-

-
-
-

-

-

- is_enum<my_enum> - inherits from true_type. -

-

-

-
-
-

-

-

- is_enum<my_enum const>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_enum<my_enum>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_enum<my_enum&>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_enum<my_enum*>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_enum<T>::value_type is the type bool. -

-

-

-
+

+ Given: enum my_enum + { one, two }; +

+

+ is_enum<my_enum> + inherits from true_type. +

+

+ is_enum<my_enum const>::type + is the type true_type. +

+

+ is_enum<my_enum>::value is an integral constant expression + that evaluates to true. +

+

+ is_enum<my_enum&>::value is an integral constant expression + that evaluates to false. +

+

+ is_enum<my_enum*>::value is an integral constant expression + that evaluates to false. +

+

+ is_enum<T>::value_type is the type bool. +

@@ -135,7 +93,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_floating_point.html b/doc/html/boost_typetraits/reference/is_floating_point.html index f343cda..ec9ad25 100644 --- a/doc/html/boost_typetraits/reference/is_floating_point.html +++ b/doc/html/boost_typetraits/reference/is_floating_point.html @@ -2,7 +2,7 @@ is_floating_point - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -45,44 +45,20 @@

Examples:

-
-

-

-

- is_floating_point<float> - inherits from true_type. -

-

-

-
-
-

-

-

- is_floating_point<double>::type is the type true_type. -

-

-

-
-
-

-

-

- is_floating_point<long double>::value - is an integral constant expression that evaluates to true. -

-

-

-
-
-

-

-

- is_floating_point<T>::value_type is the type bool. -

-

-

-
+

+ is_floating_point<float> + inherits from true_type. +

+

+ is_floating_point<double>::type is the type true_type. +

+

+ is_floating_point<long double>::value + is an integral constant expression that evaluates to true. +

+

+ is_floating_point<T>::value_type is the type bool. +

@@ -97,7 +73,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_function.html b/doc/html/boost_typetraits/reference/is_function.html index 1003e56..546e037 100644 --- a/doc/html/boost_typetraits/reference/is_function.html +++ b/doc/html/boost_typetraits/reference/is_function.html @@ -2,7 +2,7 @@ is_function - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -51,80 +51,37 @@

Examples:

-
-

-

-

- is_function<int (void)> - inherits from true_type. -

-

-

-
-
-

-

-

- is_function<long (double, int)>::type is the type true_type. -

-

-

-
-
-

-

-

- is_function<long (double, int)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_function<long (*)(double, int)>::value is an integral constant expression - that evaluates to false: the argument in this case - is a pointer type, not a function type. -

-

-

-
-
-

-

-

- is_function<long (&)(double, int)>::value is an integral constant expression - that evaluates to false: the argument in this case - is a reference to a function, not a function type. -

-

-

-
-
-

-

-

- is_function<long (MyClass::*)(double, int)>::value is an integral constant expression - that evaluates to false: the argument in this case - is a pointer to a member function. -

-

-

-
-
-

-

-

- is_function<T>::value_type is the type bool. -

-

-

-
+

+ is_function<int (void)> inherits from true_type. +

+

+ is_function<long (double, int)>::type is the type true_type. +

+

+ is_function<long (double, int)>::value is an integral constant expression + that evaluates to true. +

+

+ is_function<long (*)(double, int)>::value is an integral constant expression + that evaluates to false: the argument in this case + is a pointer type, not a function type. +

+

+ is_function<long (&)(double, int)>::value is an integral constant expression + that evaluates to false: the argument in this case + is a reference to a function, not a function type. +

+

+ is_function<long (MyClass::*)(double, int)>::value is an integral constant expression + that evaluates to false: the argument in this case + is a pointer to a member function. +

+

+ is_function<T>::value_type is the type bool. +

- +
[Tip][Tip] Tip
@@ -184,7 +141,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_fundamental.html b/doc/html/boost_typetraits/reference/is_fundamental.html index 4a97888..7c69cbf 100644 --- a/doc/html/boost_typetraits/reference/is_fundamental.html +++ b/doc/html/boost_typetraits/reference/is_fundamental.html @@ -2,7 +2,7 @@ is_fundamental - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -49,45 +49,21 @@

Examples:

-
-

-

-

- is_fundamental<int)> - inherits from true_type. -

-

-

-
-
-

-

-

- is_fundamental<double const>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_fundamental<void>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_fundamental<T>::value_type is the type bool. -

-

-

-
+

+ is_fundamental<int)> + inherits from true_type. +

+

+ is_fundamental<double const>::type + is the type true_type. +

+

+ is_fundamental<void>::value is an integral constant expression + that evaluates to true. +

+

+ is_fundamental<T>::value_type is the type bool. +

@@ -102,7 +78,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_integral.html b/doc/html/boost_typetraits/reference/is_integral.html index f1994b5..e4696fc 100644 --- a/doc/html/boost_typetraits/reference/is_integral.html +++ b/doc/html/boost_typetraits/reference/is_integral.html @@ -2,25 +2,25 @@ is_integral - + - + - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -45,45 +45,21 @@

Examples:

-
-

-

-

- is_integral<int> - inherits from true_type. -

-

-

-
-
-

-

-

- is_integral<const char>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_integral<long>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_integral<T>::value_type is the type bool. -

-

-

-
+

+ is_integral<int> + inherits from true_type. +

+

+ is_integral<const char>::type + is the type true_type. +

+

+ is_integral<long>::value is an integral constant expression + that evaluates to true. +

+

+ is_integral<T>::value_type is the type bool. +

@@ -98,7 +74,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_lvalue_reference.html b/doc/html/boost_typetraits/reference/is_lvalue_reference.html new file mode 100644 index 0000000..f3d0459 --- /dev/null +++ b/doc/html/boost_typetraits/reference/is_lvalue_reference.html @@ -0,0 +1,91 @@ + + + +is_lvalue_reference + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
template <class T>
+struct is_lvalue_reference : public true_type-or-false_type {};
+
+

+ Inherits: If T is an lvalue reference type + then inherits from true_type, + otherwise inherits from false_type. +

+

+ 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. +

+

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

+

+ Examples: +

+

+ is_lvalue_reference<int&> + inherits from true_type. +

+

+ is_lvalue_reference<int const&>::type + is the type true_type. +

+

+ is_lvalue_reference<int const&&>::type + is the type false_type. +

+

+ is_lvalue_reference<int (&)(long)>::value is an integral constant expression + that evaluates to true (the argument in this case + is a reference to a function). +

+

+ is_lvalue_reference<T>::value_type is the type bool. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + 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 88453f1..8820221 100644 --- a/doc/html/boost_typetraits/reference/is_member_function_pointer.html +++ b/doc/html/boost_typetraits/reference/is_member_function_pointer.html @@ -2,25 +2,25 @@ is_member_function_pointer - + - + - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -46,58 +46,28 @@

Examples:

-
-

-

-

- is_member_function_pointer<int (MyClass::*)(void)> inherits from true_type. -

-

-

-
-
-

-

-

- is_member_function_pointer<int (MyClass::*)(char)>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_member_function_pointer<int (MyClass::*)(void)const>::value - is an integral constant expression that evaluates to true. -

-

-

-
-
-

-

-

- is_member_function_pointer<int (MyClass::*)>::value - is an integral constant expression that evaluates to false: - the argument in this case is a pointer to a data member and not a member - function, see is_member_object_pointer - and is_member_pointer -

-

-

-
-
-

-

-

- is_member_function_pointer<T>::value_type - is the type bool. -

-

-

-
+

+ is_member_function_pointer<int (MyClass::*)(void)> inherits from true_type. +

+

+ is_member_function_pointer<int (MyClass::*)(char)>::type + is the type true_type. +

+

+ is_member_function_pointer<int (MyClass::*)(void)const>::value is an integral constant expression + that evaluates to true. +

+

+ is_member_function_pointer<int (MyClass::*)>::value + is an integral constant expression that evaluates to false: + the argument in this case is a pointer to a data member and not a member + function, see is_member_object_pointer + and is_member_pointer +

+

+ is_member_function_pointer<T>::value_type + is the type bool. +

@@ -112,7 +82,7 @@

-PrevUpHomeNext +PrevUpHomeNext
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 e18e17b..d21eaf4 100644 --- a/doc/html/boost_typetraits/reference/is_member_object_pointer.html +++ b/doc/html/boost_typetraits/reference/is_member_object_pointer.html @@ -2,7 +2,7 @@ is_member_object_pointer - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -46,58 +46,28 @@

Examples:

-
-

-

-

- is_member_object_pointer<int (MyClass::*)> inherits from true_type. -

-

-

-
-
-

-

-

- is_member_object_pointer<double (MyClass::*)>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_member_object_pointer<const int (MyClass::*)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_member_object_pointer<int (MyClass::*)(void)>::value - is an integral constant expression that evaluates to false: - the argument in this case is a pointer to a member function and not a - member object, see is_member_function_pointer - and is_member_pointer -

-

-

-
-
-

-

-

- is_member_object_pointer<T>::value_type - is the type bool. -

-

-

-
+

+ is_member_object_pointer<int (MyClass::*)> inherits from true_type. +

+

+ is_member_object_pointer<double (MyClass::*)>::type + is the type true_type. +

+

+ is_member_object_pointer<const int (MyClass::*)>::value + is an integral constant expression that evaluates to true. +

+

+ is_member_object_pointer<int (MyClass::*)(void)>::value + is an integral constant expression that evaluates to false: + the argument in this case is a pointer to a member function and not a member + object, see is_member_function_pointer + and is_member_pointer +

+

+ is_member_object_pointer<T>::value_type + is the type bool. +

@@ -112,7 +82,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_member_pointer.html b/doc/html/boost_typetraits/reference/is_member_pointer.html index 8c6ff7c..412c709 100644 --- a/doc/html/boost_typetraits/reference/is_member_pointer.html +++ b/doc/html/boost_typetraits/reference/is_member_pointer.html @@ -2,7 +2,7 @@ is_member_pointer - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -46,44 +46,20 @@

Examples:

-
-

-

-

- is_member_pointer<int (MyClass::*)> - inherits from true_type. -

-

-

-
-
-

-

-

- is_member_pointer<int (MyClass::*)(char)>::type is the type true_type. -

-

-

-
-
-

-

-

- is_member_pointer<int (MyClass::*)(void)const>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_member_pointer<T>::value_type is the type bool. -

-

-

-
+

+ is_member_pointer<int (MyClass::*)> inherits from true_type. +

+

+ is_member_pointer<int (MyClass::*)(char)>::type + is the type true_type. +

+

+ is_member_pointer<int (MyClass::*)(void)const>::value is an integral constant expression + that evaluates to true. +

+

+ is_member_pointer<T>::value_type is the type bool. +

@@ -98,7 +74,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_object.html b/doc/html/boost_typetraits/reference/is_object.html index e59b93e..70f43d8 100644 --- a/doc/html/boost_typetraits/reference/is_object.html +++ b/doc/html/boost_typetraits/reference/is_object.html @@ -2,7 +2,7 @@ is_object - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -46,87 +46,38 @@

Examples:

-
-

-

-

- is_object<int> - inherits from true_type. -

-

-

-
-
-

-

-

- is_object<int*>::type is the type true_type. -

-

-

-
-
-

-

-

- is_object<int (*)(void)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_object<int (MyClass::*)(void)const>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_object<int &>::value is an integral constant expression - that evaluates to false: reference types are not - objects -

-

-

-
-
-

-

-

- is_object<int (double)>::value is an integral constant expression - that evaluates to false: function types are not - objects -

-

-

-
-
-

-

-

- is_object<const void>::value - is an integral constant expression that evaluates to false: - void is not an object type -

-

-

-
-
-

-

-

- is_object<T>::value_type is the type bool. -

-

-

-
+

+ is_object<int> + inherits from true_type. +

+

+ is_object<int*>::type is the type true_type. +

+

+ is_object<int (*)(void)>::value is an integral constant expression + that evaluates to true. +

+

+ is_object<int (MyClass::*)(void)const>::value is an integral constant expression + that evaluates to true. +

+

+ is_object<int &>::value is an integral constant expression + that evaluates to false: reference types are not objects +

+

+ is_object<int (double)>::value + is an integral constant expression that evaluates to false: + function types are not objects +

+

+ is_object<const void>::value + is an integral constant expression that evaluates to false: + void is not an object type +

+

+ is_object<T>::value_type is the type bool. +

@@ -141,7 +92,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_pod.html b/doc/html/boost_typetraits/reference/is_pod.html index 40925f1..c7bb16f 100644 --- a/doc/html/boost_typetraits/reference/is_pod.html +++ b/doc/html/boost_typetraits/reference/is_pod.html @@ -2,7 +2,7 @@ is_pod - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -66,54 +66,24 @@

Examples:

-
-

-

-

- is_pod<int> - inherits from true_type. -

-

-

-
-
-

-

-

- is_pod<char*>::type is the type true_type. -

-

-

-
-
-

-

-

- is_pod<int (*)(long)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_pod<MyClass>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_pod<T>::value_type is the type bool. -

-

-

-
+

+ is_pod<int> + inherits from true_type. +

+

+ is_pod<char*>::type is the type true_type. +

+

+ is_pod<int (*)(long)>::value is an integral constant expression + that evaluates to true. +

+

+ is_pod<MyClass>::value is an integral constant expression + that evaluates to false. +

+

+ is_pod<T>::value_type is the type bool. +

@@ -128,7 +98,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_pointer.html b/doc/html/boost_typetraits/reference/is_pointer.html index 6497452..5f36d5e 100644 --- a/doc/html/boost_typetraits/reference/is_pointer.html +++ b/doc/html/boost_typetraits/reference/is_pointer.html @@ -2,7 +2,7 @@ is_pointer - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -46,67 +46,32 @@

Examples:

-
-

-

-

- is_pointer<int*> - inherits from true_type. -

-

-

-
-
-

-

-

- is_pointer<char* const>::type is the type true_type. -

-

-

-
-
-

-

-

- is_pointer<int (*)(long)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_pointer<int (MyClass::*)(long)>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_pointer<int (MyClass::*)>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_pointer<T>::value_type is the type bool. -

-

-

-
+

+ is_pointer<int*> + inherits from true_type. +

+

+ is_pointer<char* const>::type + is the type true_type. +

+

+ is_pointer<int (*)(long)>::value is an integral constant expression + that evaluates to true. +

+

+ is_pointer<int (MyClass::*)(long)>::value + is an integral constant expression that evaluates to false. +

+

+ is_pointer<int (MyClass::*)>::value + is an integral constant expression that evaluates to false. +

+

+ is_pointer<T>::value_type is the type bool. +

- +
[Important][Important] Important

@@ -134,7 +99,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_polymorphic.html b/doc/html/boost_typetraits/reference/is_polymorphic.html index 6719c5a..aa62711 100644 --- a/doc/html/boost_typetraits/reference/is_polymorphic.html +++ b/doc/html/boost_typetraits/reference/is_polymorphic.html @@ -2,25 +2,25 @@ is_polymorphic - + - + - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -52,54 +52,24 @@

Examples:

-
-

-

-

- Given: class poly{ virtual ~poly(); }; -

-

-

-
-
-

-

-

- is_polymorphic<poly> - inherits from true_type. -

-

-

-
-
-

-

-

- is_polymorphic<poly const>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_polymorphic<poly>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_polymorphic<T>::value_type is the type bool. -

-

-

-
+

+ Given: class poly{ virtual ~poly(); }; +

+

+ is_polymorphic<poly> + inherits from true_type. +

+

+ is_polymorphic<poly const>::type + is the type true_type. +

+

+ is_polymorphic<poly>::value is an integral constant expression + that evaluates to true. +

+

+ is_polymorphic<T>::value_type is the type bool. +

@@ -114,7 +84,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_reference.html b/doc/html/boost_typetraits/reference/is_reference.html index 6f02878..e43a14d 100644 --- a/doc/html/boost_typetraits/reference/is_reference.html +++ b/doc/html/boost_typetraits/reference/is_reference.html @@ -2,25 +2,25 @@ is_reference - + - - + + - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -30,8 +30,8 @@ struct is_reference : public true_type-or-false_type {};

- Inherits: If T is a reference pointer type - then inherits from true_type, + Inherits: If T is a reference type (either + an lvalue reference or an rvalue reference) then inherits from true_type, otherwise inherits from false_type.

@@ -51,46 +51,26 @@

Examples:

-
-

-

-

- is_reference<int&> - inherits from true_type. -

-

-

-
-
-

-

-

- is_reference<int const&>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_reference<int (&)(long)>::value is an integral constant expression - that evaluates to true (the argument in this case - is a reference to a function). -

-

-

-
-
-

-

-

- is_reference<T>::value_type is the type bool. -

-

-

-
+

+ is_reference<int&> + inherits from true_type. +

+

+ is_reference<int const&>::type + is the type true_type. +

+

+ is_reference<int const&&>::type + is the type true_type. +

+

+ is_reference<int (&)(long)>::value is an integral constant expression + that evaluates to true (the argument in this case + is a reference to a function). +

+

+ is_reference<T>::value_type is the type bool. +

@@ -105,7 +85,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_rvalue_reference.html b/doc/html/boost_typetraits/reference/is_rvalue_reference.html new file mode 100644 index 0000000..e6d3de9 --- /dev/null +++ b/doc/html/boost_typetraits/reference/is_rvalue_reference.html @@ -0,0 +1,91 @@ + + + +is_rvalue_reference + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
template <class T>
+struct is_rvalue_reference : public true_type-or-false_type {};
+
+

+ Inherits: If T is an rvalue reference type + then inherits from true_type, + otherwise inherits from false_type. +

+

+ 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. +

+

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

+

+ Examples: +

+

+ is_rvalue_reference<int&&> + inherits from true_type. +

+

+ is_rvalue_reference<int const&&>::type + is the type true_type. +

+

+ is_rvalue_reference<int const&>::type + is the type false_type. +

+

+ is_rvalue_reference<int (&&)(long)>::value is an integral constant expression + that evaluates to true (the argument in this case + is an rvalue reference to a function). +

+

+ is_rvalue_reference<T>::value_type is the type bool. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/boost_typetraits/reference/is_same.html b/doc/html/boost_typetraits/reference/is_same.html index 9baae22..76bfacb 100644 --- a/doc/html/boost_typetraits/reference/is_same.html +++ b/doc/html/boost_typetraits/reference/is_same.html @@ -2,25 +2,25 @@ is_same - + - + - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -47,64 +47,29 @@

Examples:

-
-

-

-

- is_same<int, int> - inherits from true_type. -

-

-

-
-
-

-

-

- is_same<int, int>::type is the type true_type. -

-

-

-
-
-

-

-

- is_same<int, int>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_same<int const, int>::value - is an integral constant expression that evaluates to false. -

-

-

-
-
-

-

-

- is_same<int&, int>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_same<T, T>::value_type is the type bool. -

-

-

-
+

+ is_same<int, int> inherits from true_type. +

+

+ is_same<int, int>::type + is the type true_type. +

+

+ is_same<int, int>::value + is an integral constant expression that evaluates to true. +

+

+ is_same<int const, int>::value is an integral constant expression + that evaluates to false. +

+

+ is_same<int&, int>::value is an integral constant expression + that evaluates to false. +

+

+ is_same<T, T>::value_type + is the type bool. +

@@ -119,7 +84,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_scalar.html b/doc/html/boost_typetraits/reference/is_scalar.html index d89f5f4..163cd86 100644 --- a/doc/html/boost_typetraits/reference/is_scalar.html +++ b/doc/html/boost_typetraits/reference/is_scalar.html @@ -2,7 +2,7 @@ is_scalar - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -52,74 +52,32 @@

Examples:

-
-

-

-

- is_scalar<int*> - inherits from true_type. -

-

-

-
-
-

-

-

- is_scalar<int>::type is the type true_type. -

-

-

-
-
-

-

-

- is_scalar<double>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_scalar<int (*)(long)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_scalar<int (MyClass::*)(long)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_scalar<int (MyClass::*)>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_scalar<T>::value_type is the type bool. -

-

-

-
+

+ is_scalar<int*> + inherits from true_type. +

+

+ is_scalar<int>::type is the type true_type. +

+

+ is_scalar<double>::value is an integral constant expression + that evaluates to true. +

+

+ is_scalar<int (*)(long)>::value is an integral constant expression + that evaluates to true. +

+

+ is_scalar<int (MyClass::*)(long)>::value + is an integral constant expression that evaluates to true. +

+

+ is_scalar<int (MyClass::*)>::value + is an integral constant expression that evaluates to true. +

+

+ is_scalar<T>::value_type is the type bool. +

@@ -134,7 +92,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_signed.html b/doc/html/boost_typetraits/reference/is_signed.html index 8b6281d..63a5b94 100644 --- a/doc/html/boost_typetraits/reference/is_signed.html +++ b/doc/html/boost_typetraits/reference/is_signed.html @@ -2,7 +2,7 @@ is_signed - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -46,74 +46,32 @@

Examples:

-
-

-

-

- is_signed<int> - inherits from true_type. -

-

-

-
-
-

-

-

- is_signed<int const volatile>::type is the type true_type. -

-

-

-
-
-

-

-

- is_signed<unsigned int>::value - is an integral constant expression that evaluates to false. -

-

-

-
-
-

-

-

- is_signed<myclass>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_signed<char>::value is an integral constant expression - whose value depends upon the signedness of type char. -

-

-

-
-
-

-

-

- is_signed<long long>::value - is an integral constant expression that evaluates to true. -

-

-

-
-
-

-

-

- is_signed<T>::value_type is the type bool. -

-

-

-
+

+ is_signed<int> + inherits from true_type. +

+

+ is_signed<int const volatile>::type is the type true_type. +

+

+ is_signed<unsigned int>::value + is an integral constant expression that evaluates to false. +

+

+ is_signed<myclass>::value is an integral constant expression + that evaluates to false. +

+

+ is_signed<char>::value is an integral constant expression + whose value depends upon the signedness of type char. +

+

+ is_signed<long long>::value + is an integral constant expression that evaluates to true. +

+

+ is_signed<T>::value_type is the type bool. +

@@ -128,7 +86,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_stateless.html b/doc/html/boost_typetraits/reference/is_stateless.html index fc5a31a..7e9b76d 100644 --- a/doc/html/boost_typetraits/reference/is_stateless.html +++ b/doc/html/boost_typetraits/reference/is_stateless.html @@ -2,25 +2,25 @@ is_stateless - + - + - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -83,7 +83,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_union.html b/doc/html/boost_typetraits/reference/is_union.html index 12c7226..bf367a3 100644 --- a/doc/html/boost_typetraits/reference/is_union.html +++ b/doc/html/boost_typetraits/reference/is_union.html @@ -2,25 +2,25 @@ is_union - + - + - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -58,55 +58,25 @@

Examples:

-
-

-

-

- is_union<void> - inherits from true_type. -

-

-

-
-
-

-

-

- is_union<const void>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_union<void>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_union<void*>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_union<T>::value_type is the type bool. -

-

-

-
+

+ is_union<void> + inherits from true_type. +

+

+ is_union<const void>::type + is the type true_type. +

+

+ is_union<void>::value is an integral constant expression + that evaluates to true. +

+

+ is_union<void*>::value is an integral constant expression + that evaluates to false. +

+

+ is_union<T>::value_type is the type bool. +

@@ -121,7 +91,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_unsigned.html b/doc/html/boost_typetraits/reference/is_unsigned.html index 4708e3c..4ffe3d3 100644 --- a/doc/html/boost_typetraits/reference/is_unsigned.html +++ b/doc/html/boost_typetraits/reference/is_unsigned.html @@ -2,7 +2,7 @@ is_unsigned - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -46,76 +46,33 @@

Examples:

-
-

-

-

- is_unsigned<unsigned int> inherits from true_type. -

-

-

-
-
-

-

-

- is_unsigned<unsigned int - const volatile>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_unsigned<int>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_unsigned<myclass>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_unsigned<char>::value is an integral constant expression - whose value depends upon the signedness of type char. -

-

-

-
-
-

-

-

- is_unsigned<unsigned long - long>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_unsigned<T>::value_type is the type bool. -

-

-

-
+

+ is_unsigned<unsigned int> inherits from true_type. +

+

+ is_unsigned<unsigned int const volatile>::type + is the type true_type. +

+

+ is_unsigned<int>::value is an integral constant expression + that evaluates to false. +

+

+ is_unsigned<myclass>::value is an integral constant expression + that evaluates to false. +

+

+ is_unsigned<char>::value is an integral constant expression + whose value depends upon the signedness of type char. +

+

+ is_unsigned<unsigned long + long>::value is an integral constant expression + that evaluates to true. +

+

+ is_unsigned<T>::value_type is the type bool. +

@@ -130,7 +87,7 @@

-PrevUpHomeNext +PrevUpHomeNext
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 9350237..4be5d0c 100644 --- a/doc/html/boost_typetraits/reference/is_virtual_base_of.html +++ b/doc/html/boost_typetraits/reference/is_virtual_base_of.html @@ -2,7 +2,7 @@ is_virtual_base_of - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -53,65 +53,29 @@

Examples:

-
-

-

-

- Given: class Base{}; class Derived : - public virtual - Base{}; -

-

-

-
-
-

-

-

- is_virtual_base_of<Base, Derived> - inherits from true_type. -

-

-

-
-
-

-

-

- is_virtual_base_of<Base, Derived>::type is the type true_type. -

-

-

-
-
-

-

-

- is_virtual_base_of<Base, Derived>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_virtual_base_of<Base, Derived>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_virtual_base_of<T, U>::value_type is the type bool. -

-

-

-
+

+ Given: class Base{}; class Derived : public virtual + Base{}; +

+

+ is_virtual_base_of<Base, Derived> + inherits from true_type. +

+

+ is_virtual_base_of<Base, Derived>::type is the type true_type. +

+

+ is_virtual_base_of<Base, Derived>::value is an integral constant expression + that evaluates to true. +

+

+ is_virtual_base_of<Base, Derived>::value is an integral constant expression + that evaluates to true. +

+

+ is_virtual_base_of<T, U>::value_type + is the type bool. +

@@ -126,7 +90,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_void.html b/doc/html/boost_typetraits/reference/is_void.html index 8be0496..51fe7e0 100644 --- a/doc/html/boost_typetraits/reference/is_void.html +++ b/doc/html/boost_typetraits/reference/is_void.html @@ -2,7 +2,7 @@ is_void - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -45,55 +45,25 @@

Examples:

-
-

-

-

- is_void<void> - inherits from true_type. -

-

-

-
-
-

-

-

- is_void<const void>::type - is the type true_type. -

-

-

-
-
-

-

-

- is_void<void>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_void<void*>::value is an integral constant expression - that evaluates to false. -

-

-

-
-
-

-

-

- is_void<T>::value_type is the type bool. -

-

-

-
+

+ is_void<void> + inherits from true_type. +

+

+ is_void<const void>::type + is the type true_type. +

+

+ is_void<void>::value is an integral constant expression + that evaluates to true. +

+

+ is_void<void*>::value is an integral constant expression + that evaluates to false. +

+

+ is_void<T>::value_type is the type bool. +

@@ -108,7 +78,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/is_volatile.html b/doc/html/boost_typetraits/reference/is_volatile.html index 8e956a9..46dd28f 100644 --- a/doc/html/boost_typetraits/reference/is_volatile.html +++ b/doc/html/boost_typetraits/reference/is_volatile.html @@ -2,7 +2,7 @@ is_volatile - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -45,55 +45,25 @@

Examples:

-
-

-

-

- is_volatile<volatile int> inherits from true_type. -

-

-

-
-
-

-

-

- is_volatile<const volatile - int>::type is the type true_type. -

-

-

-
-
-

-

-

- is_volatile<int* volatile>::value is an integral constant expression - that evaluates to true. -

-

-

-
-
-

-

-

- is_volatile<int volatile*>::value - is an integral constant expression that evaluates to false: - the volatile qualifier is not at the top level in this case. -

-

-

-
-
-

-

-

- is_volatile<T>::value_type is the type bool. -

-

-

-
+

+ is_volatile<volatile int> inherits from true_type. +

+

+ is_volatile<const volatile + int>::type is the type true_type. +

+

+ is_volatile<int* volatile>::value + is an integral constant expression that evaluates to true. +

+

+ is_volatile<int volatile*>::value + is an integral constant expression that evaluates to false: + the volatile qualifier is not at the top level in this case. +

+

+ is_volatile<T>::value_type is the type bool. +

@@ -108,7 +78,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/make_signed.html b/doc/html/boost_typetraits/reference/make_signed.html index 0b0397d..dfdef20 100644 --- a/doc/html/boost_typetraits/reference/make_signed.html +++ b/doc/html/boost_typetraits/reference/make_signed.html @@ -2,7 +2,7 @@ make_signed - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.15. Examples

+

Table 1.15. Examples

@@ -62,79 +62,79 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ make_signed<int>::type +

+ +

+ int +

+ +

+ make_signed<unsigned int + const>::type +

+ +

+ int const +

+ +

+ make_signed<const unsigned + long long>::type +

+ +

+ const long + long +

+ +

+ make_signed<my_enum>::type +

+ +

+ A signed integer type with the same width as the enum. +

+ +

+ make_signed<wchar_t>::type +

+ +

+ A signed integer type with the same width as wchar_t. +

+
-

- Expression -

-
-

- Result Type -

-
-

- make_signed<int>::type -

-
-

- int -

-
-

- make_signed<unsigned int - const>::type -

-
-

- int const -

-
-

- make_signed<const unsigned - long long>::type -

-
-

- const long - long -

-
-

- make_signed<my_enum>::type -

-
-

- A signed integer type with the same width as the enum. -

-
-

- make_signed<wchar_t>::type -

-
-

- A signed integer type with the same width as wchar_t. -

-
@@ -154,7 +154,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/make_unsigned.html b/doc/html/boost_typetraits/reference/make_unsigned.html index eda938b..955fd8e 100644 --- a/doc/html/boost_typetraits/reference/make_unsigned.html +++ b/doc/html/boost_typetraits/reference/make_unsigned.html @@ -2,7 +2,7 @@ make_unsigned - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.16. Examples

+

Table 1.16. Examples

@@ -62,80 +62,80 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ make_unsigned<int>::type +

+ +

+ unsigned int +

+ +

+ make_unsigned<unsigned int + const>::type +

+ +

+ unsigned int + const +

+ +

+ make_unsigned<const unsigned + long long>::type +

+ +

+ const unsigned + long long +

+ +

+ make_unsigned<my_enum>::type +

+ +

+ An unsigned integer type with the same width as the enum. +

+ +

+ make_unsigned<wchar_t>::type +

+ +

+ An unsigned integer type with the same width as wchar_t. +

+
-

- Expression -

-
-

- Result Type -

-
-

- make_unsigned<int>::type -

-
-

- unsigned int -

-
-

- make_unsigned<unsigned int - const>::type -

-
-

- unsigned int - const -

-
-

- make_unsigned<const unsigned - long long>::type -

-
-

- const unsigned - long long -

-
-

- make_unsigned<my_enum>::type -

-
-

- An unsigned integer type with the same width as the enum. -

-
-

- make_unsigned<wchar_t>::type -

-
-

- An unsigned integer type with the same width as wchar_t. -

-
@@ -155,7 +155,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/promote.html b/doc/html/boost_typetraits/reference/promote.html index 1c9264e..a9b0e86 100644 --- a/doc/html/boost_typetraits/reference/promote.html +++ b/doc/html/boost_typetraits/reference/promote.html @@ -2,7 +2,7 @@ promote - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.17. Examples

+

Table 1.17. Examples

@@ -59,52 +59,52 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ promote<short volatile>::type +

+ +

+ int volatile +

+ +

+ promote<float const>::type +

+ +

+ double const +

+ +

+ promote<short&>::type +

+ +

+ short& +

+
-

- Expression -

-
-

- Result Type -

-
-

- promote<short volatile>::type -

-
-

- int volatile -

-
-

- promote<float const>::type -

-
-

- double const -

-
-

- promote<short&>::type -

-
-

- short& -

-
@@ -124,7 +124,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/rank.html b/doc/html/boost_typetraits/reference/rank.html index 039d7ec..b535d01 100644 --- a/doc/html/boost_typetraits/reference/rank.html +++ b/doc/html/boost_typetraits/reference/rank.html @@ -2,7 +2,7 @@ rank - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -47,75 +47,33 @@

Examples:

-
-

-

-

- rank<int[]> - inherits from integral_constant<std::size_t, 1>. -

-

-

-
-
-

-

-

- rank<double[2][3][4]>::type is the type integral_constant<std::size_t, 3>. -

-

-

-
-
-

-

-

- rank<int[1]>::value - is an integral constant expression that evaluates to 1. -

-

-

-
-
-

-

-

- rank<int[][2]>::value is an integral constant expression - that evaluates to 2. -

-

-

-
-
-

-

-

- rank<int*>::value is an integral constant expression - that evaluates to 0. -

-

-

-
-
-

-

-

- rank<boost::array<int, 3> >::value - is an integral constant expression that evaluates to 0: - boost::array is a class type and not an array type! -

-

-

-
-
-

-

-

- rank<T>::value_type is the type std::size_t. -

-

-

-
+

+ rank<int[]> + inherits from integral_constant<std::size_t, 1>. +

+

+ rank<double[2][3][4]>::type is the type integral_constant<std::size_t, 3>. +

+

+ rank<int[1]>::value + is an integral constant expression that evaluates to 1. +

+

+ rank<int[][2]>::value + is an integral constant expression that evaluates to 2. +

+

+ rank<int*>::value is an integral constant expression + that evaluates to 0. +

+

+ rank<boost::array<int, 3> >::value is an integral constant expression + that evaluates to 0: boost::array + is a class type and not an array type! +

+

+ rank<T>::value_type is the type std::size_t. +

@@ -130,7 +88,7 @@

-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/remove_all_extents.html b/doc/html/boost_typetraits/reference/remove_all_extents.html index 7eb1f2c..d0c7531 100644 --- a/doc/html/boost_typetraits/reference/remove_all_extents.html +++ b/doc/html/boost_typetraits/reference/remove_all_extents.html @@ -2,7 +2,7 @@ remove_all_extents - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.18. Examples

+

Table 1.18. Examples

@@ -62,76 +62,78 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ remove_all_extents<int>::type +

+ +

+ int +

+ +

+ remove_all_extents<int + const[2]>::type +

+ +

+ int const +

+ +

+ remove_all_extents<int[][2]>::type +

+ +

+ int +

+ +

+ remove_all_extents<int[2][3][4]>::type +

+ +

+ int +

+ +

+ remove_all_extents<int + const*>::type +

+ +

+ int const* +

+
-

- Expression -

-
-

- Result Type -

-
-

- remove_all_extents<int>::type -

-
-

- int -

-
-

- remove_all_extents<int const[2]>::type -

-
-

- int const -

-
-

- remove_all_extents<int[][2]>::type -

-
-

- int -

-
-

- remove_all_extents<int[2][3][4]>::type -

-
-

- int -

-
-

- remove_all_extents<int const*>::type -

-
-

- int const* -

-
@@ -151,7 +153,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/remove_const.html b/doc/html/boost_typetraits/reference/remove_const.html index 94c714c..2558394 100644 --- a/doc/html/boost_typetraits/reference/remove_const.html +++ b/doc/html/boost_typetraits/reference/remove_const.html @@ -2,7 +2,7 @@ remove_const - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.19. Examples

+

Table 1.19. Examples

@@ -61,77 +61,77 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ remove_const<int>::type +

+ +

+ int +

+ +

+ remove_const<int const>::type +

+ +

+ int +

+ +

+ remove_const<int const + volatile>::type +

+ +

+ int volatile +

+ +

+ remove_const<int const&>::type +

+ +

+ int const& +

+ +

+ remove_const<int const*>::type +

+ +

+ int const* +

+
-

- Expression -

-
-

- Result Type -

-
-

- remove_const<int>::type -

-
-

- int -

-
-

- remove_const<int const>::type -

-
-

- int -

-
-

- remove_const<int const - volatile>::type -

-
-

- int volatile -

-
-

- remove_const<int const&>::type -

-
-

- int const& -

-
-

- remove_const<int const*>::type -

-
-

- int const* -

-
@@ -151,7 +151,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/remove_cv.html b/doc/html/boost_typetraits/reference/remove_cv.html index c46370d..5520010 100644 --- a/doc/html/boost_typetraits/reference/remove_cv.html +++ b/doc/html/boost_typetraits/reference/remove_cv.html @@ -2,7 +2,7 @@ remove_cv - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.20. Examples

+

Table 1.20. Examples

@@ -61,77 +61,77 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ remove_cv<int>::type +

+ +

+ int +

+ +

+ remove_cv<int const>::type +

+ +

+ int +

+ +

+ remove_cv<int const + volatile>::type +

+ +

+ int +

+ +

+ remove_cv<int const&>::type +

+ +

+ int const& +

+ +

+ remove_cv<int const*>::type +

+ +

+ int const* +

+
-

- Expression -

-
-

- Result Type -

-
-

- remove_cv<int>::type -

-
-

- int -

-
-

- remove_cv<int const>::type -

-
-

- int -

-
-

- remove_cv<int const - volatile>::type -

-
-

- int -

-
-

- remove_cv<int const&>::type -

-
-

- int const& -

-
-

- remove_cv<int const*>::type -

-
-

- int const* -

-
@@ -151,7 +151,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/remove_extent.html b/doc/html/boost_typetraits/reference/remove_extent.html index a14cef9..f160b98 100644 --- a/doc/html/boost_typetraits/reference/remove_extent.html +++ b/doc/html/boost_typetraits/reference/remove_extent.html @@ -2,7 +2,7 @@ remove_extent - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.21. Examples

+

Table 1.21. Examples

@@ -62,76 +62,76 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ remove_extent<int>::type +

+ +

+ int +

+ +

+ remove_extent<int const[2]>::type +

+ +

+ int const +

+ +

+ remove_extent<int[2][4]>::type +

+ +

+ int[4] +

+ +

+ remove_extent<int[][2]>::type +

+ +

+ int[2] +

+ +

+ remove_extent<int const*>::type +

+ +

+ int const* +

+
-

- Expression -

-
-

- Result Type -

-
-

- remove_extent<int>::type -

-
-

- int -

-
-

- remove_extent<int const[2]>::type -

-
-

- int const -

-
-

- remove_extent<int[2][4]>::type -

-
-

- int[4] -

-
-

- remove_extent<int[][2]>::type -

-
-

- int[2] -

-
-

- remove_extent<int const*>::type -

-
-

- int const* -

-
@@ -151,7 +151,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/remove_pointer.html b/doc/html/boost_typetraits/reference/remove_pointer.html index 22e6f4f..fd46642 100644 --- a/doc/html/boost_typetraits/reference/remove_pointer.html +++ b/doc/html/boost_typetraits/reference/remove_pointer.html @@ -2,7 +2,7 @@ remove_pointer - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.22. Examples

+

Table 1.22. Examples

@@ -63,76 +63,78 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ remove_pointer<int>::type +

+ +

+ int +

+ +

+ remove_pointer<int + const*>::type +

+ +

+ int const +

+ +

+ remove_pointer<int + const**>::type +

+ +

+ int const* +

+ +

+ remove_pointer<int&>::type +

+ +

+ int& +

+ +

+ remove_pointer<int*&>::type +

+ +

+ int*& +

+
-

- Expression -

-
-

- Result Type -

-
-

- remove_pointer<int>::type -

-
-

- int -

-
-

- remove_pointer<int const*>::type -

-
-

- int const -

-
-

- remove_pointer<int const**>::type -

-
-

- int const* -

-
-

- remove_pointer<int&>::type -

-
-

- int& -

-
-

- remove_pointer<int*&>::type -

-
-

- int*& -

-
@@ -152,7 +154,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/remove_reference.html b/doc/html/boost_typetraits/reference/remove_reference.html index 275470e..d6400d7 100644 --- a/doc/html/boost_typetraits/reference/remove_reference.html +++ b/doc/html/boost_typetraits/reference/remove_reference.html @@ -2,7 +2,7 @@ remove_reference - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.23. Examples

+

Table 1.23. Examples

@@ -61,64 +61,77 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ remove_reference<int>::type +

+ +

+ int +

+ +

+ remove_reference<int + const&>::type +

+ +

+ int const +

+ +

+ remove_reference<int&&>::type +

+ +

+ int +

+ +

+ remove_reference<int*>::type +

+ +

+ int* +

+ + + + +
-

- Expression -

-
-

- Result Type -

-
-

- remove_reference<int>::type -

-
-

- int -

-
-

- remove_reference<int const&>::type -

-
-

- int const -

-
-

- remove_reference<int*>::type -

-
-

- int* -

-
-

- remove_reference<int*&>::type -

-
-

- int* -

-
+

+ remove_reference<int*&>::type +

+
+

+ int* +

+
@@ -138,7 +151,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/reference/remove_volatile.html b/doc/html/boost_typetraits/reference/remove_volatile.html index c007bb4..29aea90 100644 --- a/doc/html/boost_typetraits/reference/remove_volatile.html +++ b/doc/html/boost_typetraits/reference/remove_volatile.html @@ -2,7 +2,7 @@ remove_volatile - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

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

-

Table 1.24. Examples

+

Table 1.24. Examples

@@ -61,77 +61,80 @@ +

+ Expression +

+ +

+ Result Type +

+ +

+ remove_volatile<int>::type +

+ +

+ int +

+ +

+ remove_volatile<int + volatile>::type +

+ +

+ int +

+ +

+ remove_volatile<int + const volatile>::type +

+ +

+ int const +

+ +

+ remove_volatile<int + volatile&>::type +

+ +

+ int const& +

+ +

+ remove_volatile<int + volatile*>::type +

+ +

+ int const* +

+
-

- Expression -

-
-

- Result Type -

-
-

- remove_volatile<int>::type -

-
-

- int -

-
-

- remove_volatile<int volatile>::type -

-
-

- int -

-
-

- remove_volatile<int const - volatile>::type -

-
-

- int const -

-
-

- remove_volatile<int volatile&>::type -

-
-

- int const& -

-
-

- remove_volatile<int volatile*>::type -

-
-

- int const* -

-
@@ -151,7 +154,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 9f95152..5dd77a0 100644 --- a/doc/html/boost_typetraits/reference/type_with_alignment.html +++ b/doc/html/boost_typetraits/reference/type_with_alignment.html @@ -2,7 +2,7 @@ type_with_alignment - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -55,7 +55,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_typetraits/user_defined.html b/doc/html/boost_typetraits/user_defined.html index 22f76ee..2948c9a 100644 --- a/doc/html/boost_typetraits/user_defined.html +++ b/doc/html/boost_typetraits/user_defined.html @@ -2,7 +2,7 @@ User Defined Specializations - + @@ -13,14 +13,14 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-PrevUpHomeNext +PrevUpHomeNext

@@ -74,7 +74,7 @@
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/index.html b/doc/html/index.html index 3a49f95..7a9a3ca 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -2,7 +2,7 @@ Chapter 1. Boost.TypeTraits - + @@ -11,13 +11,13 @@ - +
Boost C++ Libraries HomeLibrariesLibraries People FAQ More

-
Next
+
Next

@@ -30,7 +30,7 @@ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert Ramey and Jeremy Siek

-

+

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)

@@ -122,6 +122,7 @@
is_function
is_fundamental
is_integral
+
is_lvalue_reference
is_member_function_pointer
@@ -131,11 +132,12 @@
is_pod
is_pointer
is_polymorphic
+
is_reference
+
is_rvalue_reference
is_same
is_scalar
is_signed
is_stateless
-
is_reference
is_union
is_unsigned
is_virtual_base_of
@@ -168,6 +170,6 @@
-
Next
+
Next
diff --git a/doc/is_lvalue_reference.qbk b/doc/is_lvalue_reference.qbk new file mode 100644 index 0000000..bd5349c --- /dev/null +++ b/doc/is_lvalue_reference.qbk @@ -0,0 +1,40 @@ +[/ + Copyright 2010 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:is_lvalue_reference is_lvalue_reference] + template + struct is_lvalue_reference : public __tof {}; + +__inherit If T is an lvalue reference type +then inherits from __true_type, +otherwise inherits from __false_type. + +__std_ref 3.9.2 and 8.3.2. + +__compat 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. + +__header ` #include ` or ` #include ` + +__examples + +[:`is_lvalue_reference` inherits from `__true_type`.] + +[:`is_lvalue_reference::type` is the type `__true_type`.] + +[:`is_lvalue_reference::type` is the type `__false_type`.] + +[:`is_lvalue_reference::value` is an integral constant +expression that evaluates to /true/ (the argument in this case is +a reference to a function).] + +[:`is_lvalue_reference::value_type` is the type `bool`.] + +[endsect] + diff --git a/doc/is_reference.qbk b/doc/is_reference.qbk index fa3a712..baf6bf4 100644 --- a/doc/is_reference.qbk +++ b/doc/is_reference.qbk @@ -9,7 +9,8 @@ template struct is_reference : public __tof {}; -__inherit If T is a reference pointer type then inherits from __true_type, +__inherit If T is a reference type (either an lvalue reference or an rvalue reference) +then inherits from __true_type, otherwise inherits from __false_type. __std_ref 3.9.2 and 8.3.2. @@ -27,6 +28,8 @@ __examples [:`is_reference::type` is the type `__true_type`.] +[:`is_reference::type` is the type `__true_type`.] + [:`is_reference::value` is an integral constant expression that evaluates to /true/ (the argument in this case is a reference to a function).] diff --git a/doc/is_rvalue_reference.qbk b/doc/is_rvalue_reference.qbk new file mode 100644 index 0000000..edf0964 --- /dev/null +++ b/doc/is_rvalue_reference.qbk @@ -0,0 +1,40 @@ +[/ + Copyright 2010 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:is_rvalue_reference is_rvalue_reference] + template + struct is_rvalue_reference : public __tof {}; + +__inherit If T is an rvalue reference type +then inherits from __true_type, +otherwise inherits from __false_type. + +__std_ref 3.9.2 and 8.3.2. + +__compat 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. + +__header ` #include ` or ` #include ` + +__examples + +[:`is_rvalue_reference` inherits from `__true_type`.] + +[:`is_rvalue_reference::type` is the type `__true_type`.] + +[:`is_rvalue_reference::type` is the type `__false_type`.] + +[:`is_rvalue_reference::value` is an integral constant +expression that evaluates to /true/ (the argument in this case is +an rvalue reference to a function).] + +[:`is_rvalue_reference::value_type` is the type `bool`.] + +[endsect] + diff --git a/doc/remove_reference.qbk b/doc/remove_reference.qbk index 7adb206..1ed0b96 100644 --- a/doc/remove_reference.qbk +++ b/doc/remove_reference.qbk @@ -31,6 +31,8 @@ __header ` #include ` or ` #include ::type`] [`int const`]] +[[`remove_reference::type`] [`int`]] + [[`remove_reference::type`] [`int*`]] [[`remove_reference::type`] [`int*`]] diff --git a/doc/type_traits.qbk b/doc/type_traits.qbk index 2f905bd..040472d 100644 --- a/doc/type_traits.qbk +++ b/doc/type_traits.qbk @@ -44,6 +44,8 @@ [def __is_floating_point [link boost_typetraits.reference.is_floating_point is_floating_point]] [def __is_pointer [link boost_typetraits.reference.is_pointer is_pointer]] [def __is_reference [link boost_typetraits.reference.is_reference is_reference]] +[def __is_lvalue_reference [link boost_typetraits.reference.is_lvalue_reference is_lvalue_reference]] +[def __is_rvalue_reference [link boost_typetraits.reference.is_rvalue_reference is_rvalue_reference]] [def __is_member_pointer [link boost_typetraits.reference.is_member_pointer is_member_pointer]] [def __is_array [link boost_typetraits.reference.is_array is_array]] [def __is_union [link boost_typetraits.reference.is_union is_union]] @@ -210,6 +212,7 @@ See __has_trivial_constructor. [include is_function.qbk] [include is_fundamental.qbk] [include is_integral.qbk] +[include is_lvalue_reference.qbk] [include is_member_function_pointer.qbk] [include is_member_object_pointer.qbk] [include is_member_pointer.qbk] @@ -217,11 +220,12 @@ See __has_trivial_constructor. [include is_pod.qbk] [include is_pointer.qbk] [include is_polymorphic.qbk] +[include is_reference.qbk] +[include is_rvalue_reference.qbk] [include is_same.qbk] [include is_scalar.qbk] [include is_signed.qbk] [include is_stateless.qbk] -[include is_reference.qbk] [include is_union.qbk] [include is_unsigned.qbk] [include is_virtual_base_of.qbk] diff --git a/doc/value_traits.qbk b/doc/value_traits.qbk index 4ef1f98..3a4692a 100644 --- a/doc/value_traits.qbk +++ b/doc/value_traits.qbk @@ -61,7 +61,10 @@ then use the `std::numeric_limits template` instead. struct __is_pointer; template - struct __is_reference; + struct __is_lvalue_reference; + + template + struct __is_rvalue_reference; template struct __is_union; @@ -88,6 +91,9 @@ in addition to one of the primary categories. template struct __is_object; + template + struct __is_reference; + template struct __is_scalar; diff --git a/include/boost/type_traits/add_reference.hpp b/include/boost/type_traits/add_reference.hpp index 7dfb4be..eb4f9b1 100644 --- a/include/boost/type_traits/add_reference.hpp +++ b/include/boost/type_traits/add_reference.hpp @@ -51,11 +51,29 @@ struct add_reference_impl }; #else +// +// We can't filter out rvalue_references at the same level as +// references or we get ambiguities from msvc: +// + +template +struct add_reference_rvalue_layer +{ + typedef T& type; +}; + +#ifndef BOOST_NO_RVALUE_REFERENCES +template +struct add_reference_rvalue_layer +{ + typedef T&& type; +}; +#endif template struct add_reference_impl { - typedef T& type; + typedef typename add_reference_rvalue_layer::type type; }; #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION diff --git a/include/boost/type_traits/is_const.hpp b/include/boost/type_traits/is_const.hpp index e66d18a..6b848f2 100644 --- a/include/boost/type_traits/is_const.hpp +++ b/include/boost/type_traits/is_const.hpp @@ -50,12 +50,31 @@ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,__is_const(T)) #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -//* is a type T declared const - is_const +namespace detail{ +// +// We can't filter out rvalue_references at the same level as +// references or we get ambiguities from msvc: +// +template +struct is_const_rvalue_filter +{ #if BOOST_WORKAROUND(BOOST_MSVC, < 1400) - BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::cv_traits_imp::type*>::is_const) + BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::type*>::is_const); #else - BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::cv_traits_imp::is_const) + BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::is_const); #endif +}; +#ifndef BOOST_NO_RVALUE_REFERENCES +template +struct is_const_rvalue_filter +{ + BOOST_STATIC_CONSTANT(bool, value = false); +}; +#endif +} + +//* is a type T declared const - is_const +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::is_const_rvalue_filter::value) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T&,false) #if defined(BOOST_ILLEGAL_CV_REFERENCES) diff --git a/include/boost/type_traits/is_function.hpp b/include/boost/type_traits/is_function.hpp index 95dba0d..55c05c1 100644 --- a/include/boost/type_traits/is_function.hpp +++ b/include/boost/type_traits/is_function.hpp @@ -95,6 +95,9 @@ struct is_function_impl : public false_type BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,__is_function(T)) #else BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,::boost::detail::is_function_impl::value) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_function,T&&,false) +#endif #endif } // namespace boost diff --git a/include/boost/type_traits/is_lvalue_reference.hpp b/include/boost/type_traits/is_lvalue_reference.hpp new file mode 100644 index 0000000..a6af859 --- /dev/null +++ b/include/boost/type_traits/is_lvalue_reference.hpp @@ -0,0 +1,118 @@ + +// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, +// Howard Hinnant and John Maddock 2000. +// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001 + +// 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). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + +// Fixed is_pointer, is_lvalue_reference, is_const, is_volatile, is_same, +// is_member_pointer based on the Simulated Partial Specialization work +// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or +// http://groups.yahoo.com/group/boost/message/5441 +// Some workarounds in here use ideas suggested from "Generic: +// Mappings between Types and Values" +// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html). + + +#ifndef BOOST_TT_IS_LVALUE_REFERENCE_HPP_INCLUDED +#define BOOST_TT_IS_LVALUE_REFERENCE_HPP_INCLUDED + +#include + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# include +# include +#endif + +// should be the last #include +#include + +namespace boost { + +#if defined( __CODEGEARC__ ) +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_lvalue_reference,T,__is_reference(T)) +#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) + +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_lvalue_reference,T,false) +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T&,true) + +#if defined(BOOST_ILLEGAL_CV_REFERENCES) +// these are illegal specialisations; cv-qualifies applied to +// references have no effect according to [8.3.2p1], +// C++ Builder requires them though as it treats cv-qualified +// references as distinct types... +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T& const,true) +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T& volatile,true) +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T& const volatile,true) +#endif + +#if defined(__GNUC__) && (__GNUC__ < 3) +// these allow us to work around illegally cv-qualified reference +// types. +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T const ,::boost::is_lvalue_reference::value) +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T volatile ,::boost::is_lvalue_reference::value) +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_lvalue_reference,T const volatile ,::boost::is_lvalue_reference::value) +// However, the above specializations confuse gcc 2.96 unless we also +// supply these specializations for array types +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_lvalue_reference,T[N],false) +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_lvalue_reference,const T[N],false) +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_lvalue_reference,volatile T[N],false) +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_lvalue_reference,const volatile T[N],false) +#endif + +#else + +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable: 4181 4097) +#endif + +namespace detail { + +using ::boost::type_traits::yes_type; +using ::boost::type_traits::no_type; +using ::boost::type_traits::wrap; + +template T&(* is_lvalue_reference_helper1(wrap) )(wrap); +char is_lvalue_reference_helper1(...); + +template no_type is_lvalue_reference_helper2(T&(*)(wrap)); +yes_type is_lvalue_reference_helper2(...); + +template +struct is_lvalue_reference_impl +{ + BOOST_STATIC_CONSTANT( + bool, value = sizeof( + ::boost::detail::is_lvalue_reference_helper2( + ::boost::detail::is_lvalue_reference_helper1(::boost::type_traits::wrap()))) == 1 + ); +}; + +BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_lvalue_reference,void,false) +#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS +BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_lvalue_reference,void const,false) +BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_lvalue_reference,void volatile,false) +BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_lvalue_reference,void const volatile,false) +#endif + +} // namespace detail + +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_lvalue_reference,T,::boost::detail::is_lvalue_reference_impl::value) + +#ifdef BOOST_MSVC +# pragma warning(pop) +#endif + +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + +} // namespace boost + +#include + +#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED + diff --git a/include/boost/type_traits/is_reference.hpp b/include/boost/type_traits/is_reference.hpp index dcf84db..49b5f9f 100644 --- a/include/boost/type_traits/is_reference.hpp +++ b/include/boost/type_traits/is_reference.hpp @@ -1,6 +1,6 @@ // (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, -// Howard Hinnant and John Maddock 2000. +// Howard Hinnant and John Maddock 2000, 2010. // (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001 // Use, modification and distribution are subject to the Boost Software License, @@ -9,107 +9,34 @@ // // See http://www.boost.org/libs/type_traits for most recent version including documentation. -// Fixed is_pointer, is_reference, is_const, is_volatile, is_same, -// is_member_pointer based on the Simulated Partial Specialization work -// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or -// http://groups.yahoo.com/group/boost/message/5441 -// Some workarounds in here use ideas suggested from "Generic: -// Mappings between Types and Values" -// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html). - - #ifndef BOOST_TT_IS_REFERENCE_HPP_INCLUDED #define BOOST_TT_IS_REFERENCE_HPP_INCLUDED #include - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# include -# include -#endif +#include +#include +#include // should be the last #include #include namespace boost { -#if defined( __CODEGEARC__ ) -BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,__is_reference(T)) -#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,false) -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T&,true) - -#if defined(BOOST_ILLEGAL_CV_REFERENCES) -// these are illegal specialisations; cv-qualifies applied to -// references have no effect according to [8.3.2p1], -// C++ Builder requires them though as it treats cv-qualified -// references as distinct types... -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& const,true) -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& volatile,true) -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& const volatile,true) -#endif - -#if defined(__GNUC__) && (__GNUC__ < 3) -// these allow us to work around illegally cv-qualified reference -// types. -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T const ,::boost::is_reference::value) -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T volatile ,::boost::is_reference::value) -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T const volatile ,::boost::is_reference::value) -// However, the above specializations confuse gcc 2.96 unless we also -// supply these specializations for array types -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,T[N],false) -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,const T[N],false) -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,volatile T[N],false) -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,const volatile T[N],false) -#endif - -#else - -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable: 4181 4097) -#endif - namespace detail { -using ::boost::type_traits::yes_type; -using ::boost::type_traits::no_type; -using ::boost::type_traits::wrap; - -template T&(* is_reference_helper1(wrap) )(wrap); -char is_reference_helper1(...); - -template no_type is_reference_helper2(T&(*)(wrap)); -yes_type is_reference_helper2(...); - template struct is_reference_impl { - BOOST_STATIC_CONSTANT( - bool, value = sizeof( - ::boost::detail::is_reference_helper2( - ::boost::detail::is_reference_helper1(::boost::type_traits::wrap()))) == 1 - ); + BOOST_STATIC_CONSTANT(bool, value = + (::boost::type_traits::ice_or< + ::boost::is_lvalue_reference::value, ::boost::is_rvalue_reference::value + >::value)); }; -BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_reference,void,false) -#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS -BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_reference,void const,false) -BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_reference,void volatile,false) -BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_reference,void const volatile,false) -#endif - } // namespace detail BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,::boost::detail::is_reference_impl::value) -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - } // namespace boost #include diff --git a/include/boost/type_traits/is_rvalue_reference.hpp b/include/boost/type_traits/is_rvalue_reference.hpp new file mode 100644 index 0000000..cac2ee0 --- /dev/null +++ b/include/boost/type_traits/is_rvalue_reference.hpp @@ -0,0 +1,29 @@ + +// (C) John Maddock 2010. +// 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). +// +// See http://www.boost.org/libs/type_traits for most recent version including documentation. + +#ifndef BOOST_TT_IS_RVALUE_REFERENCE_HPP_INCLUDED +#define BOOST_TT_IS_RVALUE_REFERENCE_HPP_INCLUDED + +#include + +// should be the last #include +#include + +namespace boost { + +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_rvalue_reference,T,false) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_rvalue_reference,T&&,true) +#endif + +} // namespace boost + +#include + +#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED + diff --git a/include/boost/type_traits/is_volatile.hpp b/include/boost/type_traits/is_volatile.hpp index 7ab253a..677502b 100644 --- a/include/boost/type_traits/is_volatile.hpp +++ b/include/boost/type_traits/is_volatile.hpp @@ -41,16 +41,35 @@ namespace boost { +namespace detail{ +template +struct is_volatile_rval_filter +{ +#if BOOST_WORKAROUND(BOOST_MSVC, < 1400) + BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::type*>::is_volatile); +#else + BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::is_volatile); +#endif +}; +#ifndef BOOST_NO_RVALUE_REFERENCES +// +// We can't filter out rvalue_references at the same level as +// references or we get ambiguities from msvc: +// +template +struct is_volatile_rval_filter +{ + BOOST_STATIC_CONSTANT(bool, value = false); +}; +#endif +} + #if defined( __CODEGEARC__ ) BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,__is_volatile(T)) #elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) //* is a type T declared volatile - is_volatile -#if BOOST_WORKAROUND(BOOST_MSVC, < 1400) - BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::boost::detail::cv_traits_imp::type*>::is_volatile) -#else - BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::boost::detail::cv_traits_imp::is_volatile) -#endif +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::boost::detail::is_volatile_rval_filter::value) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T&,false) #if defined(BOOST_ILLEGAL_CV_REFERENCES) diff --git a/include/boost/type_traits/remove_const.hpp b/include/boost/type_traits/remove_const.hpp index 7e18d88..f4d1739 100644 --- a/include/boost/type_traits/remove_const.hpp +++ b/include/boost/type_traits/remove_const.hpp @@ -54,6 +54,18 @@ struct remove_const_impl >::type type; }; +#ifndef BOOST_NO_RVALUE_REFERENCES +// +// We can't filter out rvalue_references at the same level as +// references or we get ambiguities from msvc: +// +template +struct remove_const_impl +{ + typedef T&& type; +}; +#endif + } // namespace detail // * convert a type T to non-const type - remove_const diff --git a/include/boost/type_traits/remove_cv.hpp b/include/boost/type_traits/remove_cv.hpp index 09f8ff1..29ace77 100644 --- a/include/boost/type_traits/remove_cv.hpp +++ b/include/boost/type_traits/remove_cv.hpp @@ -27,10 +27,32 @@ namespace boost { +namespace detail{ + +template +struct rvalue_ref_filter_rem_cv +{ + typedef typename boost::detail::cv_traits_imp::unqualified_type type; +}; + +#ifndef BOOST_NO_RVALUE_REFERENCES +// +// We can't filter out rvalue_references at the same level as +// references or we get ambiguities from msvc: +// +template +struct rvalue_ref_filter_rem_cv +{ + typedef T&& type; +}; +#endif + +} + #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // convert a type T to a non-cv-qualified type - remove_cv -BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename boost::detail::cv_traits_imp::unqualified_type) +BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename detail::rvalue_ref_filter_rem_cv::type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_cv,T&,T&) #if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const[N],T type[N]) diff --git a/include/boost/type_traits/remove_reference.hpp b/include/boost/type_traits/remove_reference.hpp index 8fddc46..110389b 100644 --- a/include/boost/type_traits/remove_reference.hpp +++ b/include/boost/type_traits/remove_reference.hpp @@ -24,7 +24,27 @@ namespace boost { #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,T) +namespace detail{ +// +// We can't filter out rvalue_references at the same level as +// references or we get ambiguities from msvc: +// +template +struct remove_rvalue_ref +{ + typedef T type; +}; +#ifndef BOOST_NO_RVALUE_REFERENCES +template +struct remove_rvalue_ref +{ + typedef T type; +}; +#endif + +} // namespace detail + +BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,typename detail::remove_rvalue_ref::type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T&,T) #if defined(BOOST_ILLEGAL_CV_REFERENCES) diff --git a/include/boost/type_traits/remove_volatile.hpp b/include/boost/type_traits/remove_volatile.hpp index 723ebe3..073a2a3 100644 --- a/include/boost/type_traits/remove_volatile.hpp +++ b/include/boost/type_traits/remove_volatile.hpp @@ -53,6 +53,17 @@ struct remove_volatile_impl >::type type; }; +// +// We can't filter out rvalue_references at the same level as +// references or we get ambiguities from msvc: +// +#ifndef BOOST_NO_RVALUE_REFERENCES +template +struct remove_volatile_impl +{ + typedef T&& type; +}; +#endif } // namespace detail // * convert a type T to a non-volatile type - remove_volatile diff --git a/test/add_const_test.cpp b/test/add_const_test.cpp index 84ef68a..f61aef8 100644 --- a/test/add_const_test.cpp +++ b/test/add_const_test.cpp @@ -21,6 +21,10 @@ BOOST_DECL_TRANSFORM_TEST(add_const_test_10, ::tt::add_const, const*, const*cons BOOST_DECL_TRANSFORM_TEST(add_const_test_11, ::tt::add_const, volatile*, volatile*const) BOOST_DECL_TRANSFORM_TEST(add_const_test_5, ::tt::add_const, const &, const&) BOOST_DECL_TRANSFORM_TEST(add_const_test_6, ::tt::add_const, &, &) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(add_const_test_5a, ::tt::add_const, const &&, const&&) +BOOST_DECL_TRANSFORM_TEST(add_const_test_6a, ::tt::add_const, &&, &&) +#endif BOOST_DECL_TRANSFORM_TEST(add_const_test_8, ::tt::add_const, const [2], const [2]) BOOST_DECL_TRANSFORM_TEST(add_const_test_9, ::tt::add_const, volatile &, volatile&) BOOST_DECL_TRANSFORM_TEST(add_const_test_12, ::tt::add_const, [2][3], const[2][3]) @@ -41,6 +45,10 @@ TT_TEST_BEGIN(add_const) add_const_test_9(); add_const_test_12(); add_const_test_13(); +#ifndef BOOST_NO_RVALUE_REFERENCES + add_const_test_5a(); + add_const_test_6a(); +#endif TT_TEST_END diff --git a/test/add_cv_test.cpp b/test/add_cv_test.cpp index 65d6925..45244a7 100644 --- a/test/add_cv_test.cpp +++ b/test/add_cv_test.cpp @@ -21,6 +21,10 @@ BOOST_DECL_TRANSFORM_TEST(add_cv_test_10, ::tt::add_cv, const*, const*const vola BOOST_DECL_TRANSFORM_TEST(add_cv_test_11, ::tt::add_cv, volatile*, volatile*const volatile ) BOOST_DECL_TRANSFORM_TEST(add_cv_test_5, ::tt::add_cv, const &, const&) BOOST_DECL_TRANSFORM_TEST(add_cv_test_6, ::tt::add_cv, &, &) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(add_cv_test_5a, ::tt::add_cv, const &&, const&&) +BOOST_DECL_TRANSFORM_TEST(add_cv_test_6a, ::tt::add_cv, &&, &&) +#endif BOOST_DECL_TRANSFORM_TEST(add_cv_test_8, ::tt::add_cv, const [2], const volatile [2]) BOOST_DECL_TRANSFORM_TEST(add_cv_test_9, ::tt::add_cv, volatile &, volatile&) BOOST_DECL_TRANSFORM_TEST(add_cv_test_12, ::tt::add_cv, [2][3], const volatile[2][3]) @@ -41,6 +45,10 @@ TT_TEST_BEGIN(add_const) add_cv_test_9(); add_cv_test_12(); add_cv_test_13(); +#ifndef BOOST_NO_RVALUE_REFERENCES + add_cv_test_5a(); + add_cv_test_6a(); +#endif TT_TEST_END diff --git a/test/add_reference_test.cpp b/test/add_reference_test.cpp index 7da4d35..5e47dd2 100644 --- a/test/add_reference_test.cpp +++ b/test/add_reference_test.cpp @@ -25,6 +25,11 @@ BOOST_DECL_TRANSFORM_TEST(add_reference_test_10, ::tt::add_reference, const*, co BOOST_DECL_TRANSFORM_TEST(add_reference_test_11, ::tt::add_reference, volatile*, volatile*&) BOOST_DECL_TRANSFORM_TEST(add_reference_test_12, ::tt::add_reference, const[2][3], const (&)[2][3]) BOOST_DECL_TRANSFORM_TEST(add_reference_test_13, ::tt::add_reference, (&)[2], (&)[2]) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(add_reference_test_5a, ::tt::add_reference, const &&, const&&) +BOOST_DECL_TRANSFORM_TEST(add_reference_test_6a, ::tt::add_reference, &&, &&) +BOOST_DECL_TRANSFORM_TEST(add_reference_test_13a, ::tt::add_reference, (&&)[2], (&&)[2]) +#endif TT_TEST_BEGIN(add_reference) @@ -41,6 +46,11 @@ TT_TEST_BEGIN(add_reference) add_reference_test_11(); add_reference_test_12(); add_reference_test_13(); +#ifndef BOOST_NO_RVALUE_REFERENCES + add_reference_test_5a(); + add_reference_test_6a(); + add_reference_test_13a(); +#endif TT_TEST_END diff --git a/test/add_volatile_test.cpp b/test/add_volatile_test.cpp index a13a20d..a9d5161 100644 --- a/test/add_volatile_test.cpp +++ b/test/add_volatile_test.cpp @@ -21,6 +21,9 @@ BOOST_DECL_TRANSFORM_TEST(add_volatile_test_10, ::tt::add_volatile, const*, cons BOOST_DECL_TRANSFORM_TEST(add_volatile_test_11, ::tt::add_volatile, volatile*, volatile*volatile) BOOST_DECL_TRANSFORM_TEST(add_volatile_test_5, ::tt::add_volatile, const &, const&) BOOST_DECL_TRANSFORM_TEST(add_volatile_test_6, ::tt::add_volatile, &, &) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(add_volatile_test_6a, ::tt::add_volatile, &&, &&) +#endif BOOST_DECL_TRANSFORM_TEST(add_volatile_test_8, ::tt::add_volatile, const [2], const volatile [2]) BOOST_DECL_TRANSFORM_TEST(add_volatile_test_9, ::tt::add_volatile, volatile &, volatile&) BOOST_DECL_TRANSFORM_TEST(add_volatile_test_12, ::tt::add_volatile, [2][3], volatile[2][3]) @@ -41,6 +44,9 @@ TT_TEST_BEGIN(add_volatile) add_volatile_test_9(); add_volatile_test_12(); add_volatile_test_13(); +#ifndef BOOST_NO_RVALUE_REFERENCES + add_volatile_test_6a(); +#endif TT_TEST_END diff --git a/test/extent_test.cpp b/test/extent_test.cpp old mode 100755 new mode 100644 index 3a0b68c..6e5b699 --- a/test/extent_test.cpp +++ b/test/extent_test.cpp @@ -32,6 +32,12 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::extent::value), 0); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::extent::value), 40); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::extent::value), 0); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::extent::value, 0); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::extent::value, 0); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::extent::value, 0); +#endif + TT_TEST_END diff --git a/test/has_nothrow_assign_test.cpp b/test/has_nothrow_assign_test.cpp index bade588..a007396 100644 --- a/test/has_nothrow_assign_test.cpp +++ b/test/has_nothrow_assign_test.cpp @@ -184,6 +184,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true); diff --git a/test/has_nothrow_constr_test.cpp b/test/has_nothrow_constr_test.cpp index bf2cdb8..ad60226 100644 --- a/test/has_nothrow_constr_test.cpp +++ b/test/has_nothrow_constr_test.cpp @@ -142,6 +142,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true); diff --git a/test/has_nothrow_copy_test.cpp b/test/has_nothrow_copy_test.cpp index 4af60ea..216168a 100644 --- a/test/has_nothrow_copy_test.cpp +++ b/test/has_nothrow_copy_test.cpp @@ -181,6 +181,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); diff --git a/test/has_operator_new_test.cpp b/test/has_operator_new_test.cpp index cd7b863..0fefd84 100644 --- a/test/has_operator_new_test.cpp +++ b/test/has_operator_new_test.cpp @@ -181,6 +181,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_new_operator::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_new_operator::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_new_operator::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_new_operator::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_new_operator::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_new_operator::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_new_operator::value, false); diff --git a/test/has_trivial_assign_test.cpp b/test/has_trivial_assign_test.cpp index 61be263..44254c5 100644 --- a/test/has_trivial_assign_test.cpp +++ b/test/has_trivial_assign_test.cpp @@ -176,6 +176,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true); diff --git a/test/has_trivial_constr_test.cpp b/test/has_trivial_constr_test.cpp index a651157..cc2d4c0 100644 --- a/test/has_trivial_constr_test.cpp +++ b/test/has_trivial_constr_test.cpp @@ -142,6 +142,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, true); diff --git a/test/has_trivial_copy_test.cpp b/test/has_trivial_copy_test.cpp index f845240..43e3fad 100644 --- a/test/has_trivial_copy_test.cpp +++ b/test/has_trivial_copy_test.cpp @@ -177,6 +177,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); diff --git a/test/has_virtual_destructor_test.cpp b/test/has_virtual_destructor_test.cpp index ceb86ea..ea5f323 100644 --- a/test/has_virtual_destructor_test.cpp +++ b/test/has_virtual_destructor_test.cpp @@ -41,6 +41,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, fa BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); diff --git a/test/is_abstract_test.cpp b/test/is_abstract_test.cpp index 3f63aee..1e75fa9 100644 --- a/test/is_abstract_test.cpp +++ b/test/is_abstract_test.cpp @@ -226,6 +226,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); diff --git a/test/is_arithmetic_test.cpp b/test/is_arithmetic_test.cpp index ef51319..77fdc8b 100644 --- a/test/is_arithmetic_test.cpp +++ b/test/is_arithmetic_test.cpp @@ -136,6 +136,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); diff --git a/test/is_array_test.cpp b/test/is_array_test.cpp index 4947ba1..3161906 100644 --- a/test/is_array_test.cpp +++ b/test/is_array_test.cpp @@ -32,6 +32,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, true BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); diff --git a/test/is_class_test.cpp b/test/is_class_test.cpp index d885986..6dd33d7 100644 --- a/test/is_class_test.cpp +++ b/test/is_class_test.cpp @@ -23,6 +23,9 @@ TT_TEST_BEGIN(is_class) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES + BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); diff --git a/test/is_const_test.cpp b/test/is_const_test.cpp index a73a894..856da5c 100644 --- a/test/is_const_test.cpp +++ b/test/is_const_test.cpp @@ -23,6 +23,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); diff --git a/test/is_convertible_test.cpp b/test/is_convertible_test.cpp index ece3079..564cff3 100644 --- a/test/is_convertible_test.cpp +++ b/test/is_convertible_test.cpp @@ -67,6 +67,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); +#endif BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_convertible::value), true); diff --git a/test/is_empty_test.cpp b/test/is_empty_test.cpp index 337e072..83da327 100644 --- a/test/is_empty_test.cpp +++ b/test/is_empty_test.cpp @@ -24,6 +24,9 @@ TT_TEST_BEGIN(is_empty) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); diff --git a/test/is_enum_test.cpp b/test/is_enum_test.cpp index 019eead..386b644 100644 --- a/test/is_enum_test.cpp +++ b/test/is_enum_test.cpp @@ -18,6 +18,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); diff --git a/test/is_float_test.cpp b/test/is_float_test.cpp index f416581..4deaa2c 100644 --- a/test/is_float_test.cpp +++ b/test/is_float_test.cpp @@ -39,6 +39,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); diff --git a/test/is_floating_point_test.cpp b/test/is_floating_point_test.cpp old mode 100755 new mode 100644 index 262d51f..8b7bb63 --- a/test/is_floating_point_test.cpp +++ b/test/is_floating_point_test.cpp @@ -39,6 +39,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point::value, false); diff --git a/test/is_function_test.cpp b/test/is_function_test.cpp index f92a97d..902f94a 100644 --- a/test/is_function_test.cpp +++ b/test/is_function_test.cpp @@ -30,6 +30,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); +#endif #else std::cout << "is_function will fail with some types (references for example)" diff --git a/test/is_fundamental_test.cpp b/test/is_fundamental_test.cpp index bf7fcbb..6eee342 100644 --- a/test/is_fundamental_test.cpp +++ b/test/is_fundamental_test.cpp @@ -140,6 +140,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); diff --git a/test/is_integral_test.cpp b/test/is_integral_test.cpp index b589b5e..445e941 100644 --- a/test/is_integral_test.cpp +++ b/test/is_integral_test.cpp @@ -122,6 +122,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); diff --git a/test/is_lvalue_reference_test.cpp b/test/is_lvalue_reference_test.cpp new file mode 100644 index 0000000..513df43 --- /dev/null +++ b/test/is_lvalue_reference_test.cpp @@ -0,0 +1,56 @@ + +// (C) Copyright John Maddock 2000. +// 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 + +TT_TEST_BEGIN(is_lvalue_reference) + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_lvalue_reference::value, false); +#endif + +TT_TEST_END + + + + + + + + diff --git a/test/is_object_test.cpp b/test/is_object_test.cpp index fb45268..1be06d6 100644 --- a/test/is_object_test.cpp +++ b/test/is_object_test.cpp @@ -17,6 +17,9 @@ TT_TEST_BEGIN(is_object) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); diff --git a/test/is_pod_test.cpp b/test/is_pod_test.cpp index c21a7af..c9d3135 100644 --- a/test/is_pod_test.cpp +++ b/test/is_pod_test.cpp @@ -142,6 +142,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pod::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pod::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pod::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pod::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pod::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pod::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pod::value, true); diff --git a/test/is_pointer_test.cpp b/test/is_pointer_test.cpp index b20ccc2..6e4ea07 100644 --- a/test/is_pointer_test.cpp +++ b/test/is_pointer_test.cpp @@ -16,6 +16,9 @@ TT_TEST_BEGIN(is_pointer) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, true); diff --git a/test/is_polymorphic_test.cpp b/test/is_polymorphic_test.cpp index fb82099..b49c606 100644 --- a/test/is_polymorphic_test.cpp +++ b/test/is_polymorphic_test.cpp @@ -32,6 +32,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_polymorphic::value, false); diff --git a/test/is_reference_test.cpp b/test/is_reference_test.cpp index dd91187..aa5ed7f 100644 --- a/test/is_reference_test.cpp +++ b/test/is_reference_test.cpp @@ -35,6 +35,14 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, true); +#endif TT_TEST_END diff --git a/test/is_rvalue_reference_test.cpp b/test/is_rvalue_reference_test.cpp new file mode 100644 index 0000000..4c4bd10 --- /dev/null +++ b/test/is_rvalue_reference_test.cpp @@ -0,0 +1,54 @@ + +// (C) Copyright John Maddock 2000. +// 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 + +TT_TEST_BEGIN(is_rvalue_reference) + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, true); +#endif + +TT_TEST_END + + + + + + + + diff --git a/test/is_same_test.cpp b/test/is_same_test.cpp index 7eb784b..6f30cf7 100644 --- a/test/is_same_test.cpp +++ b/test/is_same_test.cpp @@ -15,8 +15,15 @@ TT_TEST_BEGIN(is_same) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), true); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), true); +#endif BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), false); diff --git a/test/is_scalar_test.cpp b/test/is_scalar_test.cpp index 49cdb0f..06c6914 100644 --- a/test/is_scalar_test.cpp +++ b/test/is_scalar_test.cpp @@ -144,6 +144,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); TT_TEST_END diff --git a/test/is_signed_test.cpp b/test/is_signed_test.cpp old mode 100755 new mode 100644 index 548ec41..7e1a9a1 --- a/test/is_signed_test.cpp +++ b/test/is_signed_test.cpp @@ -25,6 +25,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_signed::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_signed::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_signed::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_signed::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_signed::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_signed::value, false); diff --git a/test/is_stateless_test.cpp b/test/is_stateless_test.cpp index 8567d29..ab3381c 100644 --- a/test/is_stateless_test.cpp +++ b/test/is_stateless_test.cpp @@ -142,6 +142,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); diff --git a/test/is_union_test.cpp b/test/is_union_test.cpp index a95ecc5..b021b29 100644 --- a/test/is_union_test.cpp +++ b/test/is_union_test.cpp @@ -22,6 +22,9 @@ TT_TEST_BEGIN(is_union) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES + BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); diff --git a/test/is_unsigned_test.cpp b/test/is_unsigned_test.cpp old mode 100755 new mode 100644 index 868d576..68c2574 --- a/test/is_unsigned_test.cpp +++ b/test/is_unsigned_test.cpp @@ -24,9 +24,12 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, false); +#endif +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned::value, false); TT_TEST_END diff --git a/test/is_void_test.cpp b/test/is_void_test.cpp index 9bfde67..687fa40 100644 --- a/test/is_void_test.cpp +++ b/test/is_void_test.cpp @@ -28,6 +28,10 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +#endif TT_TEST_END diff --git a/test/is_volatile_test.cpp b/test/is_volatile_test.cpp index 1a91fd9..1ce20f8 100644 --- a/test/is_volatile_test.cpp +++ b/test/is_volatile_test.cpp @@ -32,6 +32,12 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, tr BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); +#endif TT_TEST_END diff --git a/test/rank_test.cpp b/test/rank_test.cpp old mode 100755 new mode 100644 index 7e3e094..049c311 --- a/test/rank_test.cpp +++ b/test/rank_test.cpp @@ -21,6 +21,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::rank::value, 2); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::rank::value, 3); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::rank::value, 0); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::rank::value, 0); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::rank::value, 0); +#endif TT_TEST_END diff --git a/test/remove_all_extents_test.cpp b/test/remove_all_extents_test.cpp old mode 100755 new mode 100644 index 155c8e3..609d3e5 --- a/test/remove_all_extents_test.cpp +++ b/test/remove_all_extents_test.cpp @@ -28,6 +28,10 @@ BOOST_DECL_TRANSFORM_TEST(remove_all_extents_test_13, ::tt::remove_all_extents, BOOST_DECL_TRANSFORM_TEST3(remove_all_extents_test_14, ::tt::remove_all_extents, []) BOOST_DECL_TRANSFORM_TEST(remove_all_extents_test_15, ::tt::remove_all_extents, const [], const) BOOST_DECL_TRANSFORM_TEST(remove_all_extents_test_16, ::tt::remove_all_extents, const[][3], const) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(remove_all_extents_test_5a, ::tt::remove_all_extents, const &&, const&&) +BOOST_DECL_TRANSFORM_TEST(remove_all_extents_test_13a, ::tt::remove_all_extents, (&&)[2], (&&)[2]) +#endif TT_TEST_BEGIN(remove_all_extents) @@ -47,6 +51,10 @@ TT_TEST_BEGIN(remove_all_extents) remove_all_extents_test_14(); remove_all_extents_test_15(); remove_all_extents_test_16(); +#ifndef BOOST_NO_RVALUE_REFERENCES + remove_all_extents_test_5a(); + remove_all_extents_test_13a(); +#endif TT_TEST_END diff --git a/test/remove_bounds_test.cpp b/test/remove_bounds_test.cpp index 5117908..9929f14 100644 --- a/test/remove_bounds_test.cpp +++ b/test/remove_bounds_test.cpp @@ -28,6 +28,10 @@ BOOST_DECL_TRANSFORM_TEST(remove_bounds_test_13, ::tt::remove_bounds, (&)[2], (& BOOST_DECL_TRANSFORM_TEST3(remove_bounds_test_14, ::tt::remove_bounds, []) BOOST_DECL_TRANSFORM_TEST(remove_bounds_test_15, ::tt::remove_bounds, const [], const) BOOST_DECL_TRANSFORM_TEST(remove_bounds_test_16, ::tt::remove_bounds, const[][3], const[3]) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(remove_bounds_test_5a, ::tt::remove_bounds, const &&, const&&) +BOOST_DECL_TRANSFORM_TEST(remove_bounds_test_13a, ::tt::remove_bounds, (&&)[2], (&&)[2]) +#endif TT_TEST_BEGIN(remove_bounds) @@ -47,6 +51,10 @@ TT_TEST_BEGIN(remove_bounds) remove_bounds_test_14(); remove_bounds_test_15(); remove_bounds_test_16(); +#ifndef BOOST_NO_RVALUE_REFERENCES + remove_bounds_test_5a(); + remove_bounds_test_13a(); +#endif TT_TEST_END diff --git a/test/remove_cv_test.cpp b/test/remove_cv_test.cpp index e718c61..869e25a 100644 --- a/test/remove_cv_test.cpp +++ b/test/remove_cv_test.cpp @@ -29,6 +29,9 @@ BOOST_DECL_TRANSFORM_TEST(remove_cv_test_14, ::tt::remove_cv, const volatile[2], BOOST_DECL_TRANSFORM_TEST(remove_cv_test_15, ::tt::remove_cv, [2], [2]) BOOST_DECL_TRANSFORM_TEST(remove_cv_test_16, ::tt::remove_cv, const*, const*) BOOST_DECL_TRANSFORM_TEST(remove_cv_test_17, ::tt::remove_cv, const*volatile, const*) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(remove_cv_test_5a, ::tt::remove_cv, const &&, const&&) +#endif TT_TEST_BEGIN(remove_cv) @@ -49,6 +52,9 @@ TT_TEST_BEGIN(remove_cv) remove_cv_test_15(); remove_cv_test_16(); remove_cv_test_17(); +#ifndef BOOST_NO_RVALUE_REFERENCES + remove_cv_test_5a(); +#endif TT_TEST_END diff --git a/test/remove_extent_test.cpp b/test/remove_extent_test.cpp old mode 100755 new mode 100644 index e0fa722..66407ef --- a/test/remove_extent_test.cpp +++ b/test/remove_extent_test.cpp @@ -28,6 +28,10 @@ BOOST_DECL_TRANSFORM_TEST(remove_extent_test_13, ::tt::remove_extent, (&)[2], (& BOOST_DECL_TRANSFORM_TEST3(remove_extent_test_14, ::tt::remove_extent, []) BOOST_DECL_TRANSFORM_TEST(remove_extent_test_15, ::tt::remove_extent, const [], const) BOOST_DECL_TRANSFORM_TEST(remove_extent_test_16, ::tt::remove_extent, const[][3], const[3]) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(remove_extent_test_9a, ::tt::remove_extent, const &&, const&&) +BOOST_DECL_TRANSFORM_TEST(remove_extent_test_13a, ::tt::remove_extent, (&&)[2], (&&)[2]) +#endif TT_TEST_BEGIN(remove_extent) @@ -47,6 +51,10 @@ TT_TEST_BEGIN(remove_extent) remove_extent_test_14(); remove_extent_test_15(); remove_extent_test_16(); +#ifndef BOOST_NO_RVALUE_REFERENCES + remove_extent_test_9a(); + remove_extent_test_13a(); +#endif TT_TEST_END diff --git a/test/remove_pointer_test.cpp b/test/remove_pointer_test.cpp index 97a1fdf..a04146e 100644 --- a/test/remove_pointer_test.cpp +++ b/test/remove_pointer_test.cpp @@ -25,6 +25,11 @@ BOOST_DECL_TRANSFORM_TEST(remove_pointer_test_10, ::tt::remove_pointer, const*, BOOST_DECL_TRANSFORM_TEST(remove_pointer_test_11, ::tt::remove_pointer, volatile*, volatile) BOOST_DECL_TRANSFORM_TEST(remove_pointer_test_12, ::tt::remove_pointer, const[2][3], const[2][3]) BOOST_DECL_TRANSFORM_TEST(remove_pointer_test_13, ::tt::remove_pointer, (&)[2], (&)[2]) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(remove_pointer_test_5a, ::tt::remove_pointer, const &&, const&&) +BOOST_DECL_TRANSFORM_TEST(remove_pointer_test_6a, ::tt::remove_pointer, &&, &&) +BOOST_DECL_TRANSFORM_TEST(remove_pointer_test_13a, ::tt::remove_pointer, (&&)[2], (&&)[2]) +#endif TT_TEST_BEGIN(remove_pointer) @@ -41,6 +46,11 @@ TT_TEST_BEGIN(remove_pointer) remove_pointer_test_11(); remove_pointer_test_12(); remove_pointer_test_13(); +#ifndef BOOST_NO_RVALUE_REFERENCES + remove_pointer_test_5a(); + remove_pointer_test_6a(); + remove_pointer_test_13a(); +#endif TT_TEST_END diff --git a/test/remove_reference_test.cpp b/test/remove_reference_test.cpp index 6c79f6e..d92f64c 100644 --- a/test/remove_reference_test.cpp +++ b/test/remove_reference_test.cpp @@ -25,6 +25,13 @@ BOOST_DECL_TRANSFORM_TEST(remove_reference_test_10, ::tt::remove_reference, cons BOOST_DECL_TRANSFORM_TEST(remove_reference_test_11, ::tt::remove_reference, volatile*, volatile*) BOOST_DECL_TRANSFORM_TEST(remove_reference_test_12, ::tt::remove_reference, const[2], const[2]) BOOST_DECL_TRANSFORM_TEST(remove_reference_test_13, ::tt::remove_reference, (&)[2], [2]) +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST3(remove_reference_test_3a, ::tt::remove_reference, &&) +BOOST_DECL_TRANSFORM_TEST(remove_reference_test_5a, ::tt::remove_reference, const &&, const) +BOOST_DECL_TRANSFORM_TEST3(remove_reference_test_8a, ::tt::remove_reference, &&) +BOOST_DECL_TRANSFORM_TEST(remove_reference_test_9a, ::tt::remove_reference, const &&, const) +BOOST_DECL_TRANSFORM_TEST(remove_reference_test_13a, ::tt::remove_reference, (&&)[2], [2]) +#endif TT_TEST_BEGIN(remove_reference) @@ -41,6 +48,13 @@ TT_TEST_BEGIN(remove_reference) remove_reference_test_11(); remove_reference_test_12(); remove_reference_test_13(); +#ifndef BOOST_NO_RVALUE_REFERENCES + remove_reference_test_3a(); + remove_reference_test_5a(); + remove_reference_test_8a(); + remove_reference_test_9a(); + remove_reference_test_13a(); +#endif TT_TEST_END diff --git a/test/tricky_add_pointer_test.cpp b/test/tricky_add_pointer_test.cpp index ba8e51a..4d13497 100644 --- a/test/tricky_add_pointer_test.cpp +++ b/test/tricky_add_pointer_test.cpp @@ -18,7 +18,12 @@ BOOST_DECL_TRANSFORM_TEST(add_pointer_test_8, ::tt::add_pointer, const [2], cons BOOST_DECL_TRANSFORM_TEST(add_pointer_test_9, ::tt::add_pointer, const &, const*) BOOST_DECL_TRANSFORM_TEST(add_pointer_test_12, ::tt::add_pointer, const[2][3], const (*)[2][3]) BOOST_DECL_TRANSFORM_TEST(add_pointer_test_13, ::tt::add_pointer, (&)[2], (*)[2]) - +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_DECL_TRANSFORM_TEST(add_pointer_test_5a, ::tt::add_pointer, const &&, const*) +BOOST_DECL_TRANSFORM_TEST(add_pointer_test_6a, ::tt::add_pointer, &&, *) +BOOST_DECL_TRANSFORM_TEST(add_pointer_test_9a, ::tt::add_pointer, const &&, const*) +BOOST_DECL_TRANSFORM_TEST(add_pointer_test_13a, ::tt::add_pointer, (&&)[2], (*)[2]) +#endif TT_TEST_BEGIN(tricky_add_pointer_test) @@ -28,6 +33,12 @@ TT_TEST_BEGIN(tricky_add_pointer_test) add_pointer_test_9(); add_pointer_test_12(); add_pointer_test_13(); +#ifndef BOOST_NO_RVALUE_REFERENCES + add_pointer_test_5a(); + add_pointer_test_6a(); + add_pointer_test_9a(); + add_pointer_test_13a(); +#endif TT_TEST_END diff --git a/test/tricky_partial_spec_test.cpp b/test/tricky_partial_spec_test.cpp index ce7e005..1f7df70 100644 --- a/test/tricky_partial_spec_test.cpp +++ b/test/tricky_partial_spec_test.cpp @@ -63,6 +63,11 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_of::value), false); +#endif BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_same::value), true); diff --git a/test/tricky_rvalue_test.cpp b/test/tricky_rvalue_test.cpp new file mode 100644 index 0000000..5c01402 --- /dev/null +++ b/test/tricky_rvalue_test.cpp @@ -0,0 +1,33 @@ + +// (C) Copyright John Maddock 2010. +// 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 +# include +# include +#endif + +TT_TEST_BEGIN(rvalue_reference_test) + +#ifndef BOOST_NO_RVALUE_REFERENCES +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_rvalue_reference::value, true); +#endif + +TT_TEST_END + + + + + + + +