Modified is_reference_wrapper<> to work for reference types.

[SVN r12475]
This commit is contained in:
Peter Dimov 2002-01-24 13:28:08 +00:00
parent f3f697bbc8
commit 4e350d9934

View File

@ -87,6 +87,14 @@ class unwrap_reference<reference_wrapper<T> >
typedef T type;
};
# else // no partial specialization
} // namespace boost
#include <boost/type.hpp>
namespace boost
{
namespace detail
{
typedef char (&yes_reference_wrapper_t)[1];
@ -95,7 +103,7 @@ namespace detail
no_reference_wrapper_t is_reference_wrapper_test(...);
template<typename T>
yes_reference_wrapper_t is_reference_wrapper_test(reference_wrapper<T>*);
yes_reference_wrapper_t is_reference_wrapper_test(type< reference_wrapper<T> >);
template<bool wrapped>
struct reference_unwrapper
@ -122,10 +130,9 @@ template<typename T>
class is_reference_wrapper
{
public:
static T* t;
BOOST_STATIC_CONSTANT(
bool, value = (
sizeof(detail::is_reference_wrapper_test(t))
sizeof(detail::is_reference_wrapper_test(type<T>()))
== sizeof(detail::yes_reference_wrapper_t)));
};