56 #ifndef _STL_FUNCTION_H
57 #define _STL_FUNCTION_H 1
59 namespace std _GLIBCXX_VISIBILITY(default)
61 _GLIBCXX_BEGIN_NAMESPACE_VERSION
100 template<
typename _Arg,
typename _Result>
113 template<
typename _Arg1,
typename _Arg2,
typename _Result>
139 template<
typename _Tp>
143 operator()(
const _Tp& __x,
const _Tp& __y)
const
144 {
return __x + __y; }
148 template<
typename _Tp>
152 operator()(
const _Tp& __x,
const _Tp& __y)
const
153 {
return __x - __y; }
157 template<
typename _Tp>
161 operator()(
const _Tp& __x,
const _Tp& __y)
const
162 {
return __x * __y; }
166 template<
typename _Tp>
170 operator()(
const _Tp& __x,
const _Tp& __y)
const
171 {
return __x / __y; }
175 template<
typename _Tp>
179 operator()(
const _Tp& __x,
const _Tp& __y)
const
180 {
return __x % __y; }
184 template<
typename _Tp>
188 operator()(
const _Tp& __x)
const
203 template<
typename _Tp>
207 operator()(
const _Tp& __x,
const _Tp& __y)
const
208 {
return __x == __y; }
212 template<
typename _Tp>
216 operator()(
const _Tp& __x,
const _Tp& __y)
const
217 {
return __x != __y; }
221 template<
typename _Tp>
225 operator()(
const _Tp& __x,
const _Tp& __y)
const
226 {
return __x > __y; }
230 template<
typename _Tp>
234 operator()(
const _Tp& __x,
const _Tp& __y)
const
235 {
return __x < __y; }
239 template<
typename _Tp>
243 operator()(
const _Tp& __x,
const _Tp& __y)
const
244 {
return __x >= __y; }
248 template<
typename _Tp>
252 operator()(
const _Tp& __x,
const _Tp& __y)
const
253 {
return __x <= __y; }
267 template<
typename _Tp>
271 operator()(
const _Tp& __x,
const _Tp& __y)
const
272 {
return __x && __y; }
276 template<
typename _Tp>
280 operator()(
const _Tp& __x,
const _Tp& __y)
const
281 {
return __x || __y; }
285 template<
typename _Tp>
289 operator()(
const _Tp& __x)
const
296 template<
typename _Tp>
300 operator()(
const _Tp& __x,
const _Tp& __y)
const
301 {
return __x & __y; }
304 template<
typename _Tp>
305 struct bit_or :
public binary_function<_Tp, _Tp, _Tp>
308 operator()(
const _Tp& __x,
const _Tp& __y)
const
309 {
return __x | __y; }
312 template<
typename _Tp>
313 struct bit_xor :
public binary_function<_Tp, _Tp, _Tp>
316 operator()(
const _Tp& __x,
const _Tp& __y)
const
317 {
return __x ^ __y; }
350 template<
typename _Predicate>
362 operator()(
const typename _Predicate::argument_type& __x)
const
363 {
return !_M_pred(__x); }
367 template<
typename _Predicate>
373 template<
typename _Predicate>
376 typename _Predicate::second_argument_type, bool>
386 operator()(
const typename _Predicate::first_argument_type& __x,
387 const typename _Predicate::second_argument_type& __y)
const
388 {
return !_M_pred(__x, __y); }
392 template<
typename _Predicate>
421 template<
typename _Arg,
typename _Result>
425 _Result (*_M_ptr)(_Arg);
435 operator()(_Arg __x)
const
436 {
return _M_ptr(__x); }
440 template<
typename _Arg,
typename _Result>
446 template<
typename _Arg1,
typename _Arg2,
typename _Result>
451 _Result (*_M_ptr)(_Arg1, _Arg2);
461 operator()(_Arg1 __x, _Arg2 __y)
const
462 {
return _M_ptr(__x, __y); }
466 template<
typename _Arg1,
typename _Arg2,
typename _Result>
472 template<
typename _Tp>
474 :
public unary_function<_Tp,_Tp>
477 operator()(_Tp& __x)
const
481 operator()(
const _Tp& __x)
const
485 template<
typename _Pair>
487 :
public unary_function<_Pair, typename _Pair::first_type>
489 typename _Pair::first_type&
490 operator()(_Pair& __x)
const
491 {
return __x.first; }
493 const typename _Pair::first_type&
494 operator()(
const _Pair& __x)
const
495 {
return __x.first; }
497 #if __cplusplus >= 201103L
498 template<
typename _Pair2>
499 typename _Pair2::first_type&
500 operator()(_Pair2& __x)
const
501 {
return __x.first; }
503 template<
typename _Pair2>
504 const typename _Pair2::first_type&
505 operator()(
const _Pair2& __x)
const
506 {
return __x.first; }
510 template<
typename _Pair>
512 :
public unary_function<_Pair, typename _Pair::second_type>
514 typename _Pair::second_type&
515 operator()(_Pair& __x)
const
516 {
return __x.second; }
518 const typename _Pair::second_type&
519 operator()(
const _Pair& __x)
const
520 {
return __x.second; }
541 template<
typename _Ret,
typename _Tp>
550 operator()(_Tp* __p)
const
551 {
return (__p->*_M_f)(); }
559 template<
typename _Ret,
typename _Tp>
568 operator()(
const _Tp* __p)
const
569 {
return (__p->*_M_f)(); }
572 _Ret (_Tp::*_M_f)()
const;
577 template<
typename _Ret,
typename _Tp>
586 operator()(_Tp& __r)
const
587 {
return (__r.*_M_f)(); }
595 template<
typename _Ret,
typename _Tp>
604 operator()(
const _Tp& __r)
const
605 {
return (__r.*_M_f)(); }
608 _Ret (_Tp::*_M_f)()
const;
613 template<
typename _Ret,
typename _Tp,
typename _Arg>
622 operator()(_Tp* __p, _Arg __x)
const
623 {
return (__p->*_M_f)(__x); }
626 _Ret (_Tp::*_M_f)(_Arg);
631 template<
typename _Ret,
typename _Tp,
typename _Arg>
640 operator()(
const _Tp* __p, _Arg __x)
const
641 {
return (__p->*_M_f)(__x); }
644 _Ret (_Tp::*_M_f)(_Arg)
const;
649 template<
typename _Ret,
typename _Tp,
typename _Arg>
658 operator()(_Tp& __r, _Arg __x)
const
659 {
return (__r.*_M_f)(__x); }
662 _Ret (_Tp::*_M_f)(_Arg);
667 template<
typename _Ret,
typename _Tp,
typename _Arg>
676 operator()(
const _Tp& __r, _Arg __x)
const
677 {
return (__r.*_M_f)(__x); }
680 _Ret (_Tp::*_M_f)(_Arg)
const;
685 template<
typename _Ret,
typename _Tp>
687 mem_fun(_Ret (_Tp::*__f)())
690 template<
typename _Ret,
typename _Tp>
691 inline const_mem_fun_t<_Ret, _Tp>
692 mem_fun(_Ret (_Tp::*__f)()
const)
693 {
return const_mem_fun_t<_Ret, _Tp>(__f); }
695 template<
typename _Ret,
typename _Tp>
696 inline mem_fun_ref_t<_Ret, _Tp>
697 mem_fun_ref(_Ret (_Tp::*__f)())
698 {
return mem_fun_ref_t<_Ret, _Tp>(__f); }
700 template<
typename _Ret,
typename _Tp>
701 inline const_mem_fun_ref_t<_Ret, _Tp>
702 mem_fun_ref(_Ret (_Tp::*__f)()
const)
703 {
return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
705 template<
typename _Ret,
typename _Tp,
typename _Arg>
706 inline mem_fun1_t<_Ret, _Tp, _Arg>
707 mem_fun(_Ret (_Tp::*__f)(_Arg))
708 {
return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
710 template<
typename _Ret,
typename _Tp,
typename _Arg>
711 inline const_mem_fun1_t<_Ret, _Tp, _Arg>
712 mem_fun(_Ret (_Tp::*__f)(_Arg)
const)
713 {
return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
715 template<
typename _Ret,
typename _Tp,
typename _Arg>
716 inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
717 mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
718 {
return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
720 template<
typename _Ret,
typename _Tp,
typename _Arg>
721 inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
722 mem_fun_ref(_Ret (_Tp::*__f)(_Arg)
const)
723 {
return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
727 _GLIBCXX_END_NAMESPACE_VERSION
730 #if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED
One of the adaptors for member pointers.
_Result result_type
result_type is the return type
One of the comparison functors.
One of the Boolean operations functors.
pointer_to_unary_function< _Arg, _Result > ptr_fun(_Result(*__x)(_Arg))
One of the adaptors for function pointers.
One of the adaptors for member pointers.
One of the math functors.
One of the adaptors for member pointers.
One of the negation functors.
One of the comparison functors.
_Result result_type
result_type is the return type
One of the adaptors for member pointers.
One of the math functors.
One of the comparison functors.
unary_negate< _Predicate > not1(const _Predicate &__pred)
One of the negation functors.
One of the adaptors for member pointers.
_Arg2 second_argument_type
second_argument_type is the type of the second argument
One of the math functors.
One of the adaptors for member pointers.
One of the adaptors for function pointers.
ISO C++ entities toplevel namespace is std.
One of the Boolean operations functors.
One of the adaptors for member pointers.
binary_negate< _Predicate > not2(const _Predicate &__pred)
One of the negation functors.
One of the negation functors.
One of the adaptors for member pointers.
One of the math functors.
_Arg1 first_argument_type
first_argument_type is the type of the first argument
One of the comparison functors.
One of the math functors.
One of the adaptors for function pointers.
One of the comparison functors.
_Arg argument_type
argument_type is the type of the argument
One of the Boolean operations functors.
One of the math functors.
One of the comparison functors.