Skip to content

Commit b11cf2b

Browse files
committed
Deprecate sigc::ref() in favor of std::ref().
1 parent db55e7b commit b11cf2b

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

sigc++/adaptors/macros/bind.h.m4

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -320,14 +320,14 @@ struct count_void<void,void,void,void,void,void,void>
320320
* @endcode
321321
*
322322
* You can bind references to functors by passing the objects through
323-
* the sigc::ref() helper function.
323+
* the std::ref() or std::cref() functions.
324324
*
325325
* @par Example:
326326
* @code
327327
* int some_int;
328328
* sigc::signal<void> some_signal;
329329
* void foo(int&);
330-
* some_signal.connect(sigc::bind(&foo,sigc::ref(some_int)));
330+
* some_signal.connect(sigc::bind(&foo, std::ref(some_int)));
331331
* @endcode
332332
*
333333
* If you bind an object of a sigc::trackable derived type to a functor
@@ -339,7 +339,7 @@ struct count_void<void,void,void,void,void,void,void>
339339
* struct bar : public sigc::trackable {} some_bar;
340340
* sigc::signal<void> some_signal;
341341
* void foo(bar&);
342-
* some_signal.connect(sigc::bind(&foo,sigc::ref(some_bar)));
342+
* some_signal.connect(sigc::bind(&foo, std::ref(some_bar)));
343343
* // disconnected automatically if some_bar goes out of scope
344344
* @endcode
345345
*

sigc++/reference_wrapper.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,12 @@
2121

2222
namespace sigc {
2323

24+
#ifndef SIGCXX_DISABLE_DEPRECATED
25+
2426
/** Reference wrapper.
2527
* Use sigc::ref() to create a reference wrapper.
28+
*
29+
* @deprecated Use std::ref() or std::cref() instead to create a std::reference_wrapper().
2630
*/
2731
template <class T_type>
2832
struct reference_wrapper
@@ -38,6 +42,8 @@ struct reference_wrapper
3842

3943
/** Const reference wrapper.
4044
* Use sigc::ref() to create a const reference wrapper.
45+
*
46+
* @deprecated Use std::ref() or std::cref() instead to create a std::reference_wrapper().
4147
*/
4248
template <class T_type>
4349
struct const_reference_wrapper
@@ -60,6 +66,8 @@ struct const_reference_wrapper
6066
*
6167
* @param v Reference to store.
6268
* @return A reference wrapper.
69+
*
70+
* @deprecated Use std::ref() or std::cref() instead.
6371
*/
6472
template <class T_type>
6573
reference_wrapper<T_type> ref(T_type& v)
@@ -74,17 +82,27 @@ reference_wrapper<T_type> ref(T_type& v)
7482
*
7583
* @param v Reference to store.
7684
* @return A reference wrapper.
85+
*
86+
* @deprecated Use std::ref() or std::cref() instead.
7787
*/
7888
template <class T_type>
7989
const_reference_wrapper<T_type> ref(const T_type& v)
8090
{ return const_reference_wrapper<T_type>(v); }
8191

92+
#endif // SIGCXX_DISABLE_DEPRECATED
93+
94+
8295
template <class T_type>
8396
struct unwrap_reference
8497
{
8598
typedef T_type type;
8699
};
87100

101+
102+
#ifndef SIGCXX_DISABLE_DEPRECATED
103+
104+
// Specializations for std::reference_wrapper and std::const_reference_wrapper:
105+
88106
template <class T_type>
89107
struct unwrap_reference<reference_wrapper<T_type> >
90108
{
@@ -105,6 +123,20 @@ template <class T_type>
105123
const T_type& unwrap(const const_reference_wrapper<T_type>& v)
106124
{ return v; }
107125

126+
#endif // SIGCXX_DISABLE_DEPRECATED
127+
128+
//Specializations for std::reference_wrapper:
129+
130+
template <class T_type>
131+
struct unwrap_reference<std::reference_wrapper<T_type> >
132+
{
133+
typedef T_type& type;
134+
};
135+
136+
template <class T_type>
137+
T_type& unwrap(const std::reference_wrapper<T_type>& v)
138+
{ return v; }
139+
108140
} /* namespace sigc */
109141

110142
#endif /* _SIGC_REFERENCE_WRAPPER_H_ */

0 commit comments

Comments
 (0)