mirror of
https://github.com/boostorg/utility.git
synced 2025-05-09 15:04:00 +00:00
Modified is_reference_wrapper<> to work for reference types.
[SVN r12475]
This commit is contained in:
parent
f3f697bbc8
commit
4e350d9934
@ -87,6 +87,14 @@ class unwrap_reference<reference_wrapper<T> >
|
|||||||
typedef T type;
|
typedef T type;
|
||||||
};
|
};
|
||||||
# else // no partial specialization
|
# else // no partial specialization
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#include <boost/type.hpp>
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
typedef char (&yes_reference_wrapper_t)[1];
|
typedef char (&yes_reference_wrapper_t)[1];
|
||||||
@ -95,7 +103,7 @@ namespace detail
|
|||||||
no_reference_wrapper_t is_reference_wrapper_test(...);
|
no_reference_wrapper_t is_reference_wrapper_test(...);
|
||||||
|
|
||||||
template<typename T>
|
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>
|
template<bool wrapped>
|
||||||
struct reference_unwrapper
|
struct reference_unwrapper
|
||||||
@ -122,10 +130,9 @@ template<typename T>
|
|||||||
class is_reference_wrapper
|
class is_reference_wrapper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static T* t;
|
|
||||||
BOOST_STATIC_CONSTANT(
|
BOOST_STATIC_CONSTANT(
|
||||||
bool, value = (
|
bool, value = (
|
||||||
sizeof(detail::is_reference_wrapper_test(t))
|
sizeof(detail::is_reference_wrapper_test(type<T>()))
|
||||||
== sizeof(detail::yes_reference_wrapper_t)));
|
== sizeof(detail::yes_reference_wrapper_t)));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user