xref: /src/contrib/llvm-project/libcxx/include/__functional/pointer_to_binary_function.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1344a3780SDimitry Andric // -*- C++ -*-
2344a3780SDimitry Andric //===----------------------------------------------------------------------===//
3344a3780SDimitry Andric //
4344a3780SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5344a3780SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
6344a3780SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7344a3780SDimitry Andric //
8344a3780SDimitry Andric //===----------------------------------------------------------------------===//
9344a3780SDimitry Andric 
10344a3780SDimitry Andric #ifndef _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H
11344a3780SDimitry Andric #define _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H
12344a3780SDimitry Andric 
13344a3780SDimitry Andric #include <__config>
14344a3780SDimitry Andric #include <__functional/binary_function.h>
15344a3780SDimitry Andric 
16344a3780SDimitry Andric #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
17344a3780SDimitry Andric #  pragma GCC system_header
18344a3780SDimitry Andric #endif
19344a3780SDimitry Andric 
20344a3780SDimitry Andric _LIBCPP_BEGIN_NAMESPACE_STD
21344a3780SDimitry Andric 
22344a3780SDimitry Andric #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
23344a3780SDimitry Andric 
24344a3780SDimitry Andric template <class _Arg1, class _Arg2, class _Result>
25ac9a064cSDimitry Andric class _LIBCPP_TEMPLATE_VIS
26ac9a064cSDimitry Andric _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_binary_function : public __binary_function<_Arg1, _Arg2, _Result> {
27344a3780SDimitry Andric   _Result (*__f_)(_Arg1, _Arg2);
2899aabd70SDimitry Andric 
29344a3780SDimitry Andric public:
pointer_to_binary_function(_Result (* __f)(_Arg1,_Arg2))3099aabd70SDimitry Andric   _LIBCPP_HIDE_FROM_ABI explicit pointer_to_binary_function(_Result (*__f)(_Arg1, _Arg2)) : __f_(__f) {}
operator()3199aabd70SDimitry Andric   _LIBCPP_HIDE_FROM_ABI _Result operator()(_Arg1 __x, _Arg2 __y) const { return __f_(__x, __y); }
32344a3780SDimitry Andric };
33344a3780SDimitry Andric 
34344a3780SDimitry Andric template <class _Arg1, class _Arg2, class _Result>
3599aabd70SDimitry Andric _LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_HIDE_FROM_ABI pointer_to_binary_function<_Arg1, _Arg2, _Result>
ptr_fun(_Result (* __f)(_Arg1,_Arg2))3699aabd70SDimitry Andric ptr_fun(_Result (*__f)(_Arg1, _Arg2)) {
3799aabd70SDimitry Andric   return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__f);
3899aabd70SDimitry Andric }
39344a3780SDimitry Andric 
40344a3780SDimitry Andric #endif
41344a3780SDimitry Andric 
42344a3780SDimitry Andric _LIBCPP_END_NAMESPACE_STD
43344a3780SDimitry Andric 
44344a3780SDimitry Andric #endif // _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H
45