[LLD] [COFF] Handle undefined weak symbols in LTO (#70430)
[llvm-project.git] / libcxx / modules / std / functional.inc
blob1148944a9d2fee30673811c1c3fe89c381deb500
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_back;
60   using std::bind_front;
62   // [func.bind], bind
63   using std::is_bind_expression;
64   using std::is_bind_expression_v;
65   using std::is_placeholder;
66   using std::is_placeholder_v;
68   using std::bind;
70   namespace placeholders {
71     // M is the implementation-defined number of placeholders
72     using std::placeholders::_1;
73     using std::placeholders::_10;
74     using std::placeholders::_2;
75     using std::placeholders::_3;
76     using std::placeholders::_4;
77     using std::placeholders::_5;
78     using std::placeholders::_6;
79     using std::placeholders::_7;
80     using std::placeholders::_8;
81     using std::placeholders::_9;
82   } // namespace placeholders
84   // [func.memfn], member function adaptors
85   using std::mem_fn;
87   // [func.wrap], polymorphic function wrappers
88   using std::bad_function_call;
90   using std::function;
92   using std::swap;
94   using std::operator==;
96   // [func.wrap.move], move only wrapper
97   // using std::move_only_function;
99   // [func.search], searchers
100   using std::default_searcher;
102   using std::boyer_moore_searcher;
104   using std::boyer_moore_horspool_searcher;
106   // [unord.hash], class template hash
107   using std::hash;
109   namespace ranges {
110     // [range.cmp], concept-constrained comparisons
111     using std::ranges::equal_to;
112     using std::ranges::greater;
113     using std::ranges::greater_equal;
114     using std::ranges::less;
115     using std::ranges::less_equal;
116     using std::ranges::not_equal_to;
117   } // namespace ranges
118 } // namespace std