Bump version to 19.1.0 (final)
[llvm-project.git] / libcxx / modules / std / functional.inc
blobddc7d023ee6dc23f0a3954a408cd33eace133f37
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 //===----------------------------------------------------------------------===//
10 export namespace std {
11   // [func.invoke], invoke
12   using std::invoke;
13 #if _LIBCPP_STD_VER >= 23
14   using std::invoke_r;
15 #endif
17   // [refwrap], reference_wrapper
18   using std::reference_wrapper;
20   using std::cref;
21   using std::ref;
23   // [arithmetic.operations], arithmetic operations
24   using std::divides;
25   using std::minus;
26   using std::modulus;
27   using std::multiplies;
28   using std::negate;
29   using std::plus;
30   // [comparisons], comparisons
31   using std::equal_to;
32   using std::greater;
33   using std::greater_equal;
34   using std::less;
35   using std::less_equal;
36   using std::not_equal_to;
38   // [comparisons.three.way], class compare_three_way
39   using std::compare_three_way;
41   // [logical.operations], logical operations
42   using std::logical_and;
43   using std::logical_not;
44   using std::logical_or;
46   // [bitwise.operations], bitwise operations
47   using std::bit_and;
48   using std::bit_not;
49   using std::bit_or;
50   using std::bit_xor;
52   // [func.identity], identity
53   using std::identity;
55   // [func.not.fn], function template not_fn
56   using std::not_fn;
58   // [func.bind.partial], function templates bind_front and bind_back
59   using std::bind_front;
60 #if _LIBCPP_STD_VER >= 23
61   using std::bind_back;
62 #endif
64   // [func.bind], bind
65   using std::is_bind_expression;
66   using std::is_bind_expression_v;
67   using std::is_placeholder;
68   using std::is_placeholder_v;
70   using std::bind;
72   namespace placeholders {
73     // M is the implementation-defined number of placeholders
74     using std::placeholders::_1;
75     using std::placeholders::_10;
76     using std::placeholders::_2;
77     using std::placeholders::_3;
78     using std::placeholders::_4;
79     using std::placeholders::_5;
80     using std::placeholders::_6;
81     using std::placeholders::_7;
82     using std::placeholders::_8;
83     using std::placeholders::_9;
84   } // namespace placeholders
86   // [func.memfn], member function adaptors
87   using std::mem_fn;
89   // [func.wrap], polymorphic function wrappers
90   using std::bad_function_call;
92   using std::function;
94   using std::swap;
96   using std::operator==;
98   // [func.wrap.move], move only wrapper
99   // using std::move_only_function;
101   // [func.search], searchers
102   using std::default_searcher;
104   using std::boyer_moore_searcher;
106   using std::boyer_moore_horspool_searcher;
108   // [unord.hash], class template hash
109   using std::hash;
111   namespace ranges {
112     // [range.cmp], concept-constrained comparisons
113     using std::ranges::equal_to;
114     using std::ranges::greater;
115     using std::ranges::greater_equal;
116     using std::ranges::less;
117     using std::ranges::less_equal;
118     using std::ranges::not_equal_to;
119   } // namespace ranges
120 } // namespace std