Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/libcxx/include/__cxx03/__functional/binder2nd.h
213799 views
1
// -*- C++ -*-
2
//===----------------------------------------------------------------------===//
3
//
4
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
// See https://llvm.org/LICENSE.txt for license information.
6
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
//
8
//===----------------------------------------------------------------------===//
9
10
#ifndef _LIBCPP___CXX03___FUNCTIONAL_BINDER2ND_H
11
#define _LIBCPP___CXX03___FUNCTIONAL_BINDER2ND_H
12
13
#include <__cxx03/__config>
14
#include <__cxx03/__functional/unary_function.h>
15
16
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
17
# pragma GCC system_header
18
#endif
19
20
_LIBCPP_BEGIN_NAMESPACE_STD
21
22
template <class _Operation>
23
class _LIBCPP_TEMPLATE_VIS binder2nd
24
: public __unary_function<typename _Operation::first_argument_type, typename _Operation::result_type> {
25
protected:
26
_Operation op;
27
typename _Operation::second_argument_type value;
28
29
public:
30
_LIBCPP_HIDE_FROM_ABI binder2nd(const _Operation& __x, const typename _Operation::second_argument_type __y)
31
: op(__x), value(__y) {}
32
_LIBCPP_HIDE_FROM_ABI typename _Operation::result_type
33
operator()(typename _Operation::first_argument_type& __x) const {
34
return op(__x, value);
35
}
36
_LIBCPP_HIDE_FROM_ABI typename _Operation::result_type
37
operator()(const typename _Operation::first_argument_type& __x) const {
38
return op(__x, value);
39
}
40
};
41
42
template <class _Operation, class _Tp>
43
inline _LIBCPP_HIDE_FROM_ABI binder2nd<_Operation> bind2nd(const _Operation& __op, const _Tp& __x) {
44
return binder2nd<_Operation>(__op, __x);
45
}
46
47
_LIBCPP_END_NAMESPACE_STD
48
49
#endif // _LIBCPP___CXX03___FUNCTIONAL_BINDER2ND_H
50
51