9
9
#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_FUNCTIONAL_H
10
10
#define LLVM_LIBC_SRC_SUPPORT_CPP_FUNCTIONAL_H
11
11
12
- #include " src/__support/CPP/type_traits/enable_if.h"
13
- #include " src/__support/CPP/type_traits/is_convertible.h"
14
- #include " src/__support/CPP/type_traits/is_same.h"
15
- #include " src/__support/CPP/type_traits/is_void.h"
16
- #include " src/__support/CPP/type_traits/remove_cvref.h"
17
- #include " src/__support/CPP/type_traits/remove_reference.h"
18
- #include " src/__support/CPP/utility/forward.h"
12
+ #include " src/__support/CPP/type_traits.h"
13
+ #include " src/__support/CPP/utility.h"
19
14
#include " src/__support/macros/attributes.h"
20
15
21
16
#include < stdint.h>
@@ -35,7 +30,7 @@ template <typename Ret, typename... Params> class function<Ret(Params...)> {
35
30
template <typename Callable>
36
31
LIBC_INLINE static Ret callback_fn (intptr_t callable, Params... params) {
37
32
return (*reinterpret_cast <Callable *>(callable))(
38
- cpp:: forward<Params>(params)...);
33
+ forward<Params>(params)...);
39
34
}
40
35
41
36
public:
@@ -47,18 +42,18 @@ template <typename Ret, typename... Params> class function<Ret(Params...)> {
47
42
LIBC_INLINE function (
48
43
Callable &&callable,
49
44
// This is not the copy-constructor.
50
- enable_if_t <!cpp::is_same_v <remove_cvref_t <Callable>, function>> * =
45
+ enable_if_t <!is_same <remove_cvref_t <Callable>, function>::value > * =
51
46
nullptr ,
52
47
// Functor must be callable and return a suitable type.
53
- enable_if_t <cpp:: is_void_v<Ret> ||
54
- cpp:: is_convertible_v<
48
+ enable_if_t <is_void_v<Ret> ||
49
+ is_convertible_v<
55
50
decltype (declval<Callable>()(declval<Params>()...)), Ret>>
56
51
* = nullptr)
57
- : callback(callback_fn<cpp:: remove_reference_t <Callable>>),
52
+ : callback(callback_fn<remove_reference_t <Callable>>),
58
53
callable(reinterpret_cast <intptr_t >(&callable)) {}
59
54
60
55
LIBC_INLINE Ret operator ()(Params... params) const {
61
- return callback (callable, cpp:: forward<Params>(params)...);
56
+ return callback (callable, forward<Params>(params)...);
62
57
}
63
58
64
59
LIBC_INLINE explicit operator bool () const { return callback; }
0 commit comments