19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1994 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Hewlett-Packard Company 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1996-1998 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1997 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Moscow Center for SPARC Technology 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 2000 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Pavel Kuznetsov 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 2001 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Meridian'93 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* NOTE: This is an internal header file, included by other STL headers. 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * You should not attempt to use it directly. 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This file has noo macro protection as it is meant to be included several times 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// from other header. 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Adaptor function objects: pointers to member functions. 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// There are a total of 16 = 2^4 function objects in this family. 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// (1) Member functions taking no arguments vs member functions taking 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// one argument. 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// (2) Call through pointer vs call through reference. 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// (3) Member function with void return type vs member function with 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// non-void return type. 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// (4) Const vs non-const member function. 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Note that choice (3) is nothing more than a workaround: according 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// to the draft, compilers should handle void and non-void the same way. 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This feature is not yet widely implemented, though. You can only use 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// member functions returning void if your compiler supports partial 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// specialization. 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// All of this complexity is in the function objects themselves. You can 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// ignore it by using the helper function mem_fun and mem_fun_ref, 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// which create whichever type of adaptor is appropriate. 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//This implementation will only be used if needed, that is to say when there is the return void bug 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//and when there is no partial template specialization 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_DONT_RETURN_VOID) && defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined (_STLP_MEMBER_TEMPLATE_CLASSES) 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Tp> 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Mem_fun0_ptr : public unary_function<_Tp*, _Result> { 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (_Tp::*__fun_type) (); 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator ()(_Tp* __p) const { return (__p->*_M_f)(); } 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Tp, class _Arg> 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Mem_fun1_ptr : public binary_function<_Tp*,_Arg,_Result> { 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (_Tp::*__fun_type) (_Arg); 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator ()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); } 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Tp> 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Const_mem_fun0_ptr : public unary_function<const _Tp*,_Result> { 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (_Tp::*__fun_type) () const; 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator ()(const _Tp* __p) const { return (__p->*_M_f)(); } 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Tp, class _Arg> 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Const_mem_fun1_ptr : public binary_function<const _Tp*,_Arg,_Result> { 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (_Tp::*__fun_type) (_Arg) const; 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator ()(const _Tp* __p, _Arg __x) const { 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return (__p->*_M_f)(__x); } 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Tp> 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _Mem_fun0_ref : public unary_function<_Tp,_Result> { 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (_Tp::*__fun_type) (); 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Mem_fun0_ref(__fun_type __f) : _M_f(__f) {} 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator ()(_Tp& __p) const { return (__p.*_M_f)(); } 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Tp, class _Arg> 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _Mem_fun1_ref : public binary_function<_Tp,_Arg,_Result> { 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (_Tp::*__fun_type) (_Arg); 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Mem_fun1_ref(__fun_type __f) : _M_f(__f) {} 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator ()(_Tp& __p, _Arg __x) const { return (__p.*_M_f)(__x); } 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Tp> 144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _Const_mem_fun0_ref : public unary_function<_Tp,_Result> { 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (_Tp::*__fun_type) () const; 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {} 1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator ()(const _Tp& __p) const { return (__p.*_M_f)(); } 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Tp, class _Arg> 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _Const_mem_fun1_ref : public binary_function<_Tp,_Arg,_Result> { 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (_Tp::*__fun_type) (_Arg) const; 1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {} 1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator ()(const _Tp& __p, _Arg __x) const { return (__p.*_M_f)(__x); } 1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result> 1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mem_fun_traits { 1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Tp> 1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct _Args0 { 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Mem_fun0_ptr<_Result,_Tp> _Ptr; 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Const_mem_fun0_ptr<_Result,_Tp> _Ptr_const; 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Mem_fun0_ref<_Result,_Tp> _Ref; 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Const_mem_fun0_ref<_Result,_Tp> _Ref_const; 1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Tp, class _Arg> 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct _Args1 { 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Mem_fun1_ptr<_Result,_Tp,_Arg> _Ptr; 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Const_mem_fun1_ptr<_Result,_Tp,_Arg> _Ptr_const; 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Mem_fun1_ref<_Result,_Tp,_Arg> _Ref; 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Const_mem_fun1_ref<_Result,_Tp,_Arg> _Ref_const; 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Arg, class _Result> 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_fun1_base : public unary_function<_Arg, _Result> { 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (*__fun_type) (_Arg); 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_fun1_base(__fun_type __f) : _M_f(__f) {} 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator()(_Arg __x) const { return _M_f(__x); } 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2, class _Result> 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_fun2_base : public binary_function<_Arg1,_Arg2,_Result> { 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Result (*__fun_type) (_Arg1, _Arg2); 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_fun2_base(__fun_type __f) : _M_f(__f) {} 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator()(_Arg1 __x, _Arg2 __y) const { return _M_f(__x, __y); } 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result> 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Ptr_fun_traits { 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Arg> struct _Args1 { 2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ptr_fun1_base<_Arg,_Result> _Fun; 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Arg1, class _Arg2> struct _Args2 { 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ptr_fun2_base<_Arg1,_Arg2,_Result> _Fun; 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Specializations for void return type */ 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp> 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_mem_fun0_ptr : public unary_function<_Tp*,void> { 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (); 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(_Tp* __p) const { (__p->*_M_f)(); } 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp, class _Arg> 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_mem_fun1_ptr : public binary_function<_Tp*,_Arg,void> { 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (_Arg); 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp> 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_const_mem_fun0_ptr : public unary_function<const _Tp*,void> { 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) () const; 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(const _Tp* __p) const { (__p->*_M_f)(); } 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp, class _Arg> 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_const_mem_fun1_ptr : public binary_function<const _Tp*,_Arg,void> { 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (_Arg) const; 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp> 279e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _Void_mem_fun0_ref : public unary_function<_Tp,void> { 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (); 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_mem_fun0_ref(__fun_type __f) : _M_f(__f) {} 2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(_Tp& __p) const { (__p.*_M_f)(); } 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp, class _Arg> 292e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _Void_mem_fun1_ref : public binary_function<_Tp,_Arg,void> { 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (_Arg); 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_mem_fun1_ref(__fun_type __f) : _M_f(__f) {} 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(_Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); } 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp> 305e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _Void_const_mem_fun0_ref : public unary_function<_Tp,void> { 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) () const; 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {} 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(const _Tp& __p) const { (__p.*_M_f)(); } 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp, class _Arg> 318e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _Void_const_mem_fun1_ref : public binary_function<_Tp,_Arg,void> { 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (_Arg) const; 3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {} 3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(const _Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); } 3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL 3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mem_fun_traits<void> { 3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Tp> struct _Args0 { 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_mem_fun0_ptr<_Tp> _Ptr; 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_const_mem_fun0_ptr<_Tp> _Ptr_const; 3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_mem_fun0_ref<_Tp> _Ref; 3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_const_mem_fun0_ref<_Tp> _Ref_const; 3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Tp, class _Arg> struct _Args1 { 3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_mem_fun1_ptr<_Tp,_Arg> _Ptr; 3419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_const_mem_fun1_ptr<_Tp,_Arg> _Ptr_const; 3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_mem_fun1_ref<_Tp,_Arg> _Ref; 3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_const_mem_fun1_ref<_Tp,_Arg> _Ref_const; 3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 3459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Arg> 3489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_void_fun1_base : public unary_function<_Arg, void> { 3499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (*__fun_type) (_Arg); 3519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_void_fun1_base(__fun_type __f) : _M_f(__f) {} 3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Arg __x) const { _M_f(__x); } 3559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2> 3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_void_fun2_base : public binary_function<_Arg1,_Arg2,void> { 3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (*__fun_type) (_Arg1, _Arg2); 3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_void_fun2_base(__fun_type __f) : _M_f(__f) {} 3659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Arg1 __x, _Arg2 __y) const { _M_f(__x, __y); } 3689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL 3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Ptr_fun_traits<void> { 3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Arg> struct _Args1 { 3769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ptr_void_fun1_base<_Arg> _Fun; 3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 3789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Arg1, class _Arg2> struct _Args2 { 3809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ptr_void_fun2_base<_Arg1,_Arg2> _Fun; 3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 3829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// pavel: need extra level of inheritance here since MSVC++ does not 3859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// accept traits-based fake partial specialization for template 3869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// arguments other than first 3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Arg> 3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_fun1 : 3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun { 3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun _Base; 3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_fun1(typename _Base::__fun_type __f) : _Base(__f) {} 3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Arg1, class _Arg2> 3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_fun2 : 3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun { 3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun _Base; 4019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_fun2(typename _Base::__fun_type __f) : _Base(__f) {} 4029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 404e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Result, class _Tp> 405e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass mem_fun_t : 406e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr { 407e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 408e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr _Base; 409e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 410e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {} 411e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 4129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 413e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Result, class _Tp> 414e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass const_mem_fun_t : 415e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const { 416e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 417e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const _Base; 418e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 419e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit const_mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {} 420e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 421e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 422e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Result, class _Tp> 423e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass mem_fun_ref_t : 424e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref { 425e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 426e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref _Base; 427e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 428e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} 429e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 4309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 431e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Result, class _Tp> 432e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass const_mem_fun_ref_t : 433e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const { 434e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 435e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const _Base; 436e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 437e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit const_mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} 438e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 4399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 440e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Result, class _Tp, class _Arg> 441e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass mem_fun1_t : 442e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr { 443e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 444e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr _Base; 445e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 446e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {} 447e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 448e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 449e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Result, class _Tp, class _Arg> 450e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass const_mem_fun1_t : 451e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const { 452e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 453e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const _Base; 454e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 455e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit const_mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {} 456e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 457e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 458e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Result, class _Tp, class _Arg> 459e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass mem_fun1_ref_t : 460e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref { 461e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 462e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref _Base; 463e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 464e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} 465e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 466e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 467e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Result, class _Tp, class _Arg> 468e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass const_mem_fun1_ref_t : 469e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const { 470e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 471e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const _Base; 472e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 473e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit const_mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} 474e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 475e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 476e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Arg, class _Result> 477e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass pointer_to_unary_function : 478e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Ptr_fun1<_Result,_Arg> { 479e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 480e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Ptr_fun1<_Result,_Arg>::__fun_type __fun_type; 481e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 482e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit pointer_to_unary_function(__fun_type __f) 483e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott : _Ptr_fun1<_Result,_Arg>(__f) {} 484e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 485e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 486e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttemplate <class _Arg1, class _Arg2, class _Result> 487e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass pointer_to_binary_function : 488e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public _Ptr_fun2<_Result,_Arg1,_Arg2> { 489e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef typename 490e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Ptr_fun2<_Result,_Arg1,_Arg2>::__fun_type __fun_type; 491e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottpublic: 492e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit pointer_to_binary_function(__fun_type __f) 493e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott : _Ptr_fun2<_Result,_Arg1,_Arg2>(__f) {} 494e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}; 495e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 496e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else 4979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp> 4999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_t : public unary_function<_Tp*,_Ret> { 5009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(void); 5019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_t(__fun_type __pf) : _M_f(__pf) {} 5039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); } 5049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp> 5099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_t : public unary_function<const _Tp*,_Ret> { 5109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(void) const; 5119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_t(__fun_type __pf) : _M_f(__pf) {} 5139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(const _Tp* __p) const { return (__p->*_M_f)(); } 5149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp> 5199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_ref_t : public unary_function<_Tp,_Ret> { 5209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(void); 5219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {} 5239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(_Tp& __r) const { return (__r.*_M_f)(); } 5249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp> 5299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_ref_t : public unary_function<_Tp,_Ret> { 5309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(void) const; 5319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {} 5339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); } 5349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp, class _Arg> 5399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> { 5409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(_Arg); 5419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_t(__fun_type __pf) : _M_f(__pf) {} 5439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); } 5449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp, class _Arg> 5499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_t : public binary_function<const _Tp*,_Arg,_Ret> { 5509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(_Arg) const; 5519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_t(__fun_type __pf) : _M_f(__pf) {} 5539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(const _Tp* __p, _Arg __x) const 5549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return (__p->*_M_f)(__x); } 5559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp, class _Arg> 5609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> { 5619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(_Arg); 5629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {} 5649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(_Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); } 5659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp, class _Arg> 5709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> { 5719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(_Arg) const; 5729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {} 5749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(const _Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); } 5759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg, class _Result> 5809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_unary_function : public unary_function<_Arg, _Result> { 5819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 5829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result (*_M_ptr)(_Arg); 5839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block pointer_to_unary_function() {} 5859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_unary_function(_Result (*__x)(_Arg)) : _M_ptr(__x) {} 5869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator()(_Arg __x) const { return _M_ptr(__x); } 5879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2, class _Result> 5909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_binary_function : 5919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public binary_function<_Arg1,_Arg2,_Result> { 5929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 5939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result (*_M_ptr)(_Arg1, _Arg2); 5949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block pointer_to_binary_function() {} 5969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 5979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_ptr(__x) {} 5989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator()(_Arg1 __x, _Arg2 __y) const { 5999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_ptr(__x, __y); 6009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 6019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 603e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_STLP_DONT_RETURN_VOID) && !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) 604e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//Partial specializations for the void type 6059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 6069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_t<void, _Tp> : public unary_function<_Tp*,void> { 6079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(void); 6089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} 6109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Tp* __p) const { (__p->*_M_f)(); } 6119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 6169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_t<void, _Tp> : public unary_function<const _Tp*,void> { 6179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(void) const; 6189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} 6209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(const _Tp* __p) const { (__p->*_M_f)(); } 6219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 6269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> { 6279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(void); 6289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} 6309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Tp& __r) const { (__r.*_M_f)(); } 6319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 6369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> { 6379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(void) const; 6389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} 6409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(const _Tp& __r) const { (__r.*_M_f)(); } 6419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Arg> 6469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_t<void, _Tp, _Arg> : public binary_function<_Tp*,_Arg,void> { 6479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(_Arg); 6489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} 6509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } 6519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Arg> 6569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_t<void, _Tp, _Arg> 6579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : public binary_function<const _Tp*,_Arg,void> { 6589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(_Arg) const; 6599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} 6619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } 6629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Arg> 6679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_ref_t<void, _Tp, _Arg> 6689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : public binary_function<_Tp,_Arg,void> { 6699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(_Arg); 6709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} 6729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); } 6739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Arg> 6789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_ref_t<void, _Tp, _Arg> 6799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : public binary_function<_Tp,_Arg,void> { 6809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(_Arg) const; 6819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} 6839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(const _Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); } 6849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg> 6899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_unary_function<_Arg, void> : public unary_function<_Arg, void> { 6909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (*__fun_type)(_Arg); 6919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_ptr; 6929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block pointer_to_unary_function() {} 6949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_unary_function(__fun_type __x) : _M_ptr(__x) {} 6959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Arg __x) const { _M_ptr(__x); } 6969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2> 6999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_binary_function<_Arg1, _Arg2, void> : public binary_function<_Arg1,_Arg2,void> { 7009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (*__fun_type)(_Arg1, _Arg2); 7019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_ptr; 7029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 7039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block pointer_to_binary_function() {} 7049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_binary_function(__fun_type __x) : _M_ptr(__x) {} 7059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Arg1 __x, _Arg2 __y) const { _M_ptr(__x, __y); } 7069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 7079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 708e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 7099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 710e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 7119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 712e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MEMBER_POINTER_PARAM_BUG) 7139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Mem_fun adaptor helper functions. There are only two: 7149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mem_fun and mem_fun_ref. (mem_fun1 and mem_fun1_ref 7159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// are provided for backward compatibility, but they are no longer 7169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// part of the C++ standard.) 7179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 7199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun_t<_Result,_Tp> 7209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun(_Result (_Tp::*__f)()) { return mem_fun_t<_Result,_Tp>(__f); } 7219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 7239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun_t<_Result,_Tp> 7249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun(_Result (_Tp::*__f)() const) { return const_mem_fun_t<_Result,_Tp>(__f); } 7259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 7279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun_ref_t<_Result,_Tp> 7289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun_ref(_Result (_Tp::*__f)()) { return mem_fun_ref_t<_Result,_Tp>(__f); } 7299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 7319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun_ref_t<_Result,_Tp> 7329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun_ref(_Result (_Tp::*__f)() const) { return const_mem_fun_ref_t<_Result,_Tp>(__f); } 7339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun1_t<_Result,_Tp,_Arg> 7369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); } 7379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun1_t<_Result,_Tp,_Arg> 7409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); } 7419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun1_ref_t<_Result,_Tp,_Arg> 7449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } 7459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun1_ref_t<_Result,_Tp,_Arg> 7489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } 7499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 750e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if !(defined (_STLP_NO_EXTENSIONS) || defined (_STLP_NO_ANACHRONISMS)) 7519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mem_fun1 and mem_fun1_ref are no longer part of the C++ standard, 7529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// but they are provided for backward compatibility. 7539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun1_t<_Result,_Tp,_Arg> 7559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun1(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); } 7569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun1_t<_Result,_Tp,_Arg> 7599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun1(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); } 7609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun1_ref_t<_Result,_Tp,_Arg> 7639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun1_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } 7649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun1_ref_t<_Result,_Tp,_Arg> 7679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun1_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } 7689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 769e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 7709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 771e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 7729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg, class _Result> 7749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline pointer_to_unary_function<_Arg, _Result> 7759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockptr_fun(_Result (*__f)(_Arg)) 7769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return pointer_to_unary_function<_Arg, _Result>(__f); } 7779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2, class _Result> 7799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline pointer_to_binary_function<_Arg1,_Arg2,_Result> 7809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockptr_fun(_Result (*__f)(_Arg1, _Arg2)) 7819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f); } 7829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 784