_function_adaptors.h revision 9720d5f59b9c1f5d1b9ecbc9173dbcb71bd557be
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 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#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> 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _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> 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _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> 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Const_mem_fun0_ref : public unary_function<const _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> 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Const_mem_fun1_ref : public binary_function<const _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 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*Specialization for void return type 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block*/ 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp> 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_mem_fun0_ptr : public unary_function<_Tp*,void> { 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (); 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(_Tp* __p) const { (__p->*_M_f)(); } 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp, class _Arg> 2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_mem_fun1_ptr : public binary_function<_Tp*,_Arg,void> { 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (_Arg); 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp> 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_const_mem_fun0_ptr : public unary_function<const _Tp*,void> { 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) () const; 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(const _Tp* __p) const { (__p->*_M_f)(); } 2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp, class _Arg> 2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_const_mem_fun1_ptr : public binary_function<const _Tp*,_Arg,void> { 2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (_Arg) const; 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp> 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_mem_fun0_ref : public unary_function<_Tp&,void> { 2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (); 2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_mem_fun0_ref(__fun_type __f) : _M_f(__f) {} 2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(_Tp& __p) const { (__p.*_M_f)(); } 2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp, class _Arg> 2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_mem_fun1_ref : public binary_function<_Tp&,_Arg,void> { 2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (_Arg); 2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_mem_fun1_ref(__fun_type __f) : _M_f(__f) {} 2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(_Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); } 3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp> 3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_const_mem_fun0_ref : public unary_function<const _Tp&,void> { 3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) () const; 3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {} 3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(const _Tp& __p) const { (__p.*_M_f)(); } 3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Tp, class _Arg> 3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Void_const_mem_fun1_ref : public binary_function<const _Tp&,_Arg,void> { 3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type) (_Arg) const; 3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Void_const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {} 3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator ()(const _Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); } 3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL 3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Mem_fun_traits<void> { 3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Tp> struct _Args0 { 3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_mem_fun0_ptr<_Tp> _Ptr; 3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_const_mem_fun0_ptr<_Tp> _Ptr_const; 3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_mem_fun0_ref<_Tp> _Ref; 3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_const_mem_fun0_ref<_Tp> _Ref_const; 3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Tp, class _Arg> struct _Args1 { 3419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_mem_fun1_ptr<_Tp,_Arg> _Ptr; 3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_const_mem_fun1_ptr<_Tp,_Arg> _Ptr_const; 3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_mem_fun1_ref<_Tp,_Arg> _Ref; 3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Void_const_mem_fun1_ref<_Tp,_Arg> _Ref_const; 3459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 3469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Arg> 3499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_void_fun1_base : public unary_function<_Arg, void> { 3509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (*__fun_type) (_Arg); 3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_void_fun1_base(__fun_type __f) : _M_f(__f) {} 3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Arg __x) const { _M_f(__x); } 3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2> 3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_void_fun2_base : public binary_function<_Arg1,_Arg2,void> { 3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (*__fun_type) (_Arg1, _Arg2); 3659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_void_fun2_base(__fun_type __f) : _M_f(__f) {} 3669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 3689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Arg1 __x, _Arg2 __y) const { _M_f(__x, __y); } 3699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL 3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _Ptr_fun_traits<void> { 3769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Arg> struct _Args1 { 3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ptr_void_fun1_base<_Arg> _Fun; 3789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 3799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block template<class _Arg1, class _Arg2> struct _Args2 { 3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ptr_void_fun2_base<_Arg1,_Arg2> _Fun; 3829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// pavel: need extra level of inheritance here since MSVC++ does not 3869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// accept traits-based fake partial specialization for template 3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// arguments other than first 3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Arg> 3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_fun1 : 3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun { 3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun _Base; 3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_fun1(typename _Base::__fun_type __f) : _Base(__f) {} 3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate<class _Result, class _Arg1, class _Arg2> 3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _Ptr_fun2 : 3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun { 4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 4019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun _Base; 4029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit _Ptr_fun2(typename _Base::__fun_type __f) : _Base(__f) {} 4039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_RETURN_VOID && _STLP_NO_CLASS_PARTIAL_SPECIALIZATION && _STLP_MEMBER_TEMPLATE_CLASSES*/ 4079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined(_STLP_DONT_RETURN_VOID) || !defined(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) || !defined (_STLP_MEMBER_TEMPLATE_CLASSES) 4109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp> 4129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_t : public unary_function<_Tp*,_Ret> { 4139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(void); 4149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_t(__fun_type __pf) : _M_f(__pf) {} 4169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); } 4179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 4189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 4199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp> 4229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_t : public unary_function<const _Tp*,_Ret> { 4239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(void) const; 4249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_t(__fun_type __pf) : _M_f(__pf) {} 4269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(const _Tp* __p) const { return (__p->*_M_f)(); } 4279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 4289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 4299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp> 4339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_ref_t : public unary_function<_Tp,_Ret> { 4349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(void); 4359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {} 4379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(_Tp& __r) const { return (__r.*_M_f)(); } 4389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 4399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 4409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp> 4439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_ref_t : public unary_function<_Tp,_Ret> { 4449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(void) const; 4459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {} 4479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); } 4489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 4499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 4509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp, class _Arg> 4539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> { 4549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(_Arg); 4559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_t(__fun_type __pf) : _M_f(__pf) {} 4579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); } 4589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 4599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 4609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp, class _Arg> 4639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_t : public binary_function<const _Tp*,_Arg,_Ret> { 4649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(_Arg) const; 4659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_t(__fun_type __pf) : _M_f(__pf) {} 4679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(const _Tp* __p, _Arg __x) const 4689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return (__p->*_M_f)(__x); } 4699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 4709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 4719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp, class _Arg> 4749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> { 4759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(_Arg); 4769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {} 4789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(_Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); } 4799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 4809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 4819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Ret, class _Tp, class _Arg> 4849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> { 4859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef _Ret (_Tp::*__fun_type)(_Arg) const; 4869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {} 4889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ret operator()(const _Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); } 4899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 4909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 4919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 4929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 4939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg, class _Result> 4949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_unary_function : public unary_function<_Arg, _Result> { 4959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 4969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result (*_M_ptr)(_Arg); 4979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 4989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block pointer_to_unary_function() {} 4999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_unary_function(_Result (*__x)(_Arg)) : _M_ptr(__x) {} 5009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator()(_Arg __x) const { return _M_ptr(__x); } 5019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2, class _Result> 5049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_binary_function : 5059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public binary_function<_Arg1,_Arg2,_Result> { 5069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 5079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result (*_M_ptr)(_Arg1, _Arg2); 5089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block pointer_to_binary_function() {} 5109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 5119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _M_ptr(__x) {} 5129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Result operator()(_Arg1 __x, _Arg2 __y) const { 5139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return _M_ptr(__x, __y); 5149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 5159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined(_STLP_DONT_RETURN_VOID) && !defined(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) 5199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//Partial specialization for the void type 5209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 5219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_t<void, _Tp> : public unary_function<_Tp*,void> { 5229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(void); 5239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} 5259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Tp* __p) const { (__p->*_M_f)(); } 5269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 5319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_t<void, _Tp> : public unary_function<const _Tp*,void> { 5329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(void) const; 5339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} 5359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(const _Tp* __p) const { (__p->*_M_f)(); } 5369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 5419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> { 5429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(void); 5439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} 5459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Tp& __r) const { (__r.*_M_f)(); } 5469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp> 5519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> { 5529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(void) const; 5539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} 5559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(const _Tp& __r) const { (__r.*_M_f)(); } 5569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Arg> 5619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_t<void, _Tp, _Arg> : public binary_function<_Tp*,_Arg,void> { 5629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(_Arg); 5639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} 5659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } 5669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Arg> 5719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_t<void, _Tp, _Arg> 5729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : public binary_function<const _Tp*,_Arg,void> { 5739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(_Arg) const; 5749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} 5769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } 5779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Arg> 5829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_ref_t<void, _Tp, _Arg> 5839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : public binary_function<_Tp,_Arg,void> { 5849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(_Arg); 5859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} 5879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); } 5889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 5899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 5909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 5919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 5929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Tp, class _Arg> 5939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_ref_t<void, _Tp, _Arg> 5949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : public binary_function<_Tp,_Arg,void> { 5959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (_Tp::*__fun_type)(_Arg) const; 5969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 5979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} 5989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(const _Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); } 5999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 6009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_f; 6019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg> 6049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_unary_function<_Arg, void> : public unary_function<_Arg, void> { 6059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (*__fun_type)(_Arg); 6069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_ptr; 6079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block pointer_to_unary_function() {} 6099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_unary_function(__fun_type __x) : _M_ptr(__x) {} 6109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Arg __x) const { _M_ptr(__x); } 6119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2> 6149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_binary_function<_Arg1, _Arg2, void> : public binary_function<_Arg1,_Arg2,void> { 6159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef void (*__fun_type)(_Arg1, _Arg2); 6169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __fun_type _M_ptr; 6179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block pointer_to_binary_function() {} 6199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_binary_function(__fun_type __x) : _M_ptr(__x) {} 6209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block void operator()(_Arg1 __x, _Arg2 __y) const { _M_ptr(__x, __y); } 6219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*_STLP_DONT_RETURN_VOID && !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION*/ 6249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else /*!_STLP_DONT_RETURN_VOID || !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION || !_STLP_MEMBER_TEMPLATE_CLASSES*/ 6269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//mem_fun_t 6289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 6299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_t : 6309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr { 6319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 6329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr _Base; 6339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {} 6359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//const_mem_fun_t 6389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 6399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_t : 6409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const { 6419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 6429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const _Base; 6439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {} 6459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//mem_fun_ref_t 6489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 6499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun_ref_t : 6509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref { 6519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 6529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref _Base; 6539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} 6559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//const_mem_fun_ref_t 6589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 6599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun_ref_t : 6609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const { 6619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 6629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const _Base; 6639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} 6659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//mem_fun1_t 6689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 6699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_t : 6709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr { 6719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 6729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr _Base; 6739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {} 6759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//const_mem_fun1_t 6789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 6799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_t : 6809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const { 6819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 6829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const _Base; 6839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {} 6859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//mem_fun1_ref_t 6889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 6899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass mem_fun1_ref_t : 6909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref { 6919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 6929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref _Base; 6939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 6949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} 6959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 6969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 6979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//const_mem_fun1_t 6989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 6999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass const_mem_fun1_ref_t : 7009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const { 7019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 7029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const _Base; 7039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 7049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit const_mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} 7059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 7069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg, class _Result> 7099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_unary_function : 7109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic _Ptr_fun1<_Result,_Arg> { 7119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 7129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ptr_fun1<_Result,_Arg>::__fun_type __fun_type; 7139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 7149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_unary_function(__fun_type __f) 7159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _Ptr_fun1<_Result,_Arg>(__f) {} 7169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 7179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2, class _Result> 7199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass pointer_to_binary_function : 7209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic _Ptr_fun2<_Result,_Arg1,_Arg2> { 7219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef typename 7229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Ptr_fun2<_Result,_Arg1,_Arg2>::__fun_type __fun_type; 7239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 7249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit pointer_to_binary_function(__fun_type __f) 7259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : _Ptr_fun2<_Result,_Arg1,_Arg2>(__f) {} 7269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 7279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /*!_STLP_DONT_RETURN_VOID || !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION || !_STLP_MEMBER_TEMPLATE_CLASSES*/ 7299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if !defined (_STLP_MEMBER_POINTER_PARAM_BUG) 7329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Mem_fun adaptor helper functions. There are only two: 7339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mem_fun and mem_fun_ref. (mem_fun1 and mem_fun1_ref 7349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// are provided for backward compatibility, but they are no longer 7359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// part of the C++ standard.) 7369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 7389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun_t<_Result,_Tp> 7399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun(_Result (_Tp::*__f)()) { return mem_fun_t<_Result,_Tp>(__f); } 7409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 7429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun_t<_Result,_Tp> 7439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun(_Result (_Tp::*__f)() const) { return const_mem_fun_t<_Result,_Tp>(__f); } 7449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 7469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun_ref_t<_Result,_Tp> 7479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun_ref(_Result (_Tp::*__f)()) { return mem_fun_ref_t<_Result,_Tp>(__f); } 7489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp> 7509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun_ref_t<_Result,_Tp> 7519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun_ref(_Result (_Tp::*__f)() const) { return const_mem_fun_ref_t<_Result,_Tp>(__f); } 7529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun1_t<_Result,_Tp,_Arg> 7559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun(_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_fun(_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_fun_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_fun_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } 7689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# if !(defined (_STLP_NO_EXTENSIONS) || defined (_STLP_NO_ANACHRONISMS)) 7709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mem_fun1 and mem_fun1_ref are no longer part of the C++ standard, 7719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// but they are provided for backward compatibility. 7729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun1_t<_Result,_Tp,_Arg> 7749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun1(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); } 7759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun1_t<_Result,_Tp,_Arg> 7789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun1(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); } 7799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline mem_fun1_ref_t<_Result,_Tp,_Arg> 7829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun1_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } 7839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Result, class _Tp, class _Arg> 7859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline const_mem_fun1_ref_t<_Result,_Tp,_Arg> 7869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockmem_fun1_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } 7879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif /* _STLP_NO_EXTENSIONS */ 7899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif /* _STLP_MEMBER_POINTER_PARAM_BUG */ 7919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg, class _Result> 7939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline pointer_to_unary_function<_Arg, _Result> 7949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockptr_fun(_Result (*__f)(_Arg)) 7959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return pointer_to_unary_function<_Arg, _Result>(__f); } 7969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 7979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _Arg1, class _Arg2, class _Result> 7989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline pointer_to_binary_function<_Arg1,_Arg2,_Result> 7999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockptr_fun(_Result (*__f)(_Arg1, _Arg2)) 8009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f); } 8019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 8029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 803