#ifndef REFERENCE_WRAPPER_H_
#define REFERENCE_WRAPPER_H_
template <typename T_type>
struct reference_wrapper
{
explicit reference_wrapper(T_type& v)
: value_(v) {}
operator T_type& () const
{ return value_; }
T_type& value_;
};
/** Const reference wrapper.
* Use sigc::ref() to create a const reference wrapper.
*/
template <typename T_type>
struct const_reference_wrapper
{
explicit const_reference_wrapper(const T_type& v)
: value_(v) {}
operator const T_type& () const
{ return value_; }
const T_type& value_;
};
template <typename T_type>
reference_wrapper<T_type> ref(T_type& v)
{ return reference_wrapper<T_type>(v); }
template <typename T_type>
const_reference_wrapper<T_type> ref(const T_type& v)
{ return const_reference_wrapper<T_type>(v); }
template <typename T_type>
struct unwrap_reference
{
typedef T_type type;
};
template <typename T_type>
struct unwrap_reference<reference_wrapper<T_type> >
{
typedef T_type& type;
};
template <typename T_type>
struct unwrap_reference<const_reference_wrapper<T_type> >
{
typedef const T_type& type;
};
template <typename T_type>
T_type& unwrap(const reference_wrapper<T_type>& v)
{ return v; }
template <typename T_type>
const T_type& unwrap(const const_reference_wrapper<T_type>& v)
{ return v; }
#endif // REFERENCE_WRAPPER_H_
error C2872: “reference_wrapper”: 不明确的符号
1>d:\work\library\programme\libraryclient\include\refwrapper.h(41): error C2872: “reference_wrapper”: 不明确的符号
1> 可能是“d:\work\library\programme\libraryclient\include\refwrapper.h(15) : reference_wrapper”
1> 或 “c:\program files (x86)\microsoft visual studio 12.0\vc\include\xrefwrap(652) : std::reference_wrapper”
1>d:\work\library\programme\libraryclient\include\refwrapper.h(55): error C2872: “reference_wrapper”: 不明确的符号
1> 可能是“d:\work\library\programme\libraryclient\include\refwrapper.h(15) : reference_wrapper”
1> 或 “c:\program files (x86)\microsoft visual studio 12.0\vc\include\xrefwrap(652) : std::reference_wrapper”
1>d:\work\library\programme\libraryclient\include\refwrapper.h(67): error C2872: “reference_wrapper”: 不明确的符号
1> 可能是“d:\work\library\programme\libraryclient\include\refwrapper.h(15) : reference_wrapper”