@@ -43,7 +43,7 @@ static void* operator_new_impl(std::size_t size) {
43
43
return p;
44
44
}
45
45
46
- _LIBCPP_MAKE_OVERRIDABLE_FUNCTION_DETECTABLE _LIBCPP_WEAK void * operator new (std::size_t size) _THROW_BAD_ALLOC {
46
+ _LIBCPP_OVERRIDABLE_FUNCTION ( void *, operator new , (std::size_t size) ) _THROW_BAD_ALLOC {
47
47
void * p = operator_new_impl (size);
48
48
if (p == nullptr )
49
49
__throw_bad_alloc_shim ();
@@ -54,7 +54,7 @@ _LIBCPP_WEAK void* operator new(size_t size, const std::nothrow_t&) noexcept {
54
54
# if !_LIBCPP_HAS_EXCEPTIONS
55
55
# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
56
56
_LIBCPP_ASSERT_SHIM (
57
- !std::__is_function_overridden ( static_cast < void * (*)( std::size_t )>( &operator new )),
57
+ ( !std::__is_function_overridden < void *( std::size_t ), &operator new >( )),
58
58
" libc++ was configured with exceptions disabled and `operator new(size_t)` has been overridden, "
59
59
" but `operator new(size_t, nothrow_t)` has not been overridden. This is problematic because "
60
60
" `operator new(size_t, nothrow_t)` must call `operator new(size_t)`, which will terminate in case "
@@ -74,15 +74,13 @@ _LIBCPP_WEAK void* operator new(size_t size, const std::nothrow_t&) noexcept {
74
74
# endif
75
75
}
76
76
77
- _LIBCPP_MAKE_OVERRIDABLE_FUNCTION_DETECTABLE _LIBCPP_WEAK void * operator new [](size_t size) _THROW_BAD_ALLOC {
78
- return ::operator new (size);
79
- }
77
+ _LIBCPP_OVERRIDABLE_FUNCTION (void *, operator new [], (size_t size)) _THROW_BAD_ALLOC { return ::operator new (size); }
80
78
81
79
_LIBCPP_WEAK void * operator new [](size_t size, const std::nothrow_t &) noexcept {
82
80
# if !_LIBCPP_HAS_EXCEPTIONS
83
81
# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
84
82
_LIBCPP_ASSERT_SHIM (
85
- !std::__is_function_overridden ( static_cast < void * (*)( std::size_t )>( &operator new [])),
83
+ ( !std::__is_function_overridden < void *( std::size_t ), &operator new []>( )),
86
84
" libc++ was configured with exceptions disabled and `operator new[](size_t)` has been overridden, "
87
85
" but `operator new[](size_t, nothrow_t)` has not been overridden. This is problematic because "
88
86
" `operator new[](size_t, nothrow_t)` must call `operator new[](size_t)`, which will terminate in case "
@@ -136,8 +134,7 @@ static void* operator_new_aligned_impl(std::size_t size, std::align_val_t alignm
136
134
return p;
137
135
}
138
136
139
- _LIBCPP_MAKE_OVERRIDABLE_FUNCTION_DETECTABLE _LIBCPP_WEAK void *
140
- operator new (std::size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC {
137
+ _LIBCPP_OVERRIDABLE_FUNCTION (void *, operator new , (std::size_t size, std::align_val_t alignment)) _THROW_BAD_ALLOC {
141
138
void * p = operator_new_aligned_impl (size, alignment);
142
139
if (p == nullptr )
143
140
__throw_bad_alloc_shim ();
@@ -148,7 +145,7 @@ _LIBCPP_WEAK void* operator new(size_t size, std::align_val_t alignment, const s
148
145
# if !_LIBCPP_HAS_EXCEPTIONS
149
146
# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
150
147
_LIBCPP_ASSERT_SHIM (
151
- !std::__is_function_overridden ( static_cast < void * (*)( std::size_t , std::align_val_t )>( &operator new )),
148
+ ( !std::__is_function_overridden < void *( std::size_t , std::align_val_t ), &operator new >( )),
152
149
" libc++ was configured with exceptions disabled and `operator new(size_t, align_val_t)` has been overridden, "
153
150
" but `operator new(size_t, align_val_t, nothrow_t)` has not been overridden. This is problematic because "
154
151
" `operator new(size_t, align_val_t, nothrow_t)` must call `operator new(size_t, align_val_t)`, which will "
@@ -168,23 +165,21 @@ _LIBCPP_WEAK void* operator new(size_t size, std::align_val_t alignment, const s
168
165
# endif
169
166
}
170
167
171
- _LIBCPP_MAKE_OVERRIDABLE_FUNCTION_DETECTABLE _LIBCPP_WEAK void *
172
- operator new [](size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC {
168
+ _LIBCPP_OVERRIDABLE_FUNCTION (void *, operator new [], (size_t size, std::align_val_t alignment)) _THROW_BAD_ALLOC {
173
169
return ::operator new (size, alignment);
174
170
}
175
171
176
172
_LIBCPP_WEAK void * operator new [](size_t size, std::align_val_t alignment, const std::nothrow_t &) noexcept {
177
173
# if !_LIBCPP_HAS_EXCEPTIONS
178
174
# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
179
175
_LIBCPP_ASSERT_SHIM (
180
- !std::__is_function_overridden ( static_cast < void * (*)( std::size_t , std::align_val_t )>( &operator new [])),
176
+ ( !std::__is_function_overridden < void *( std::size_t , std::align_val_t ), &operator new []>( )),
181
177
" libc++ was configured with exceptions disabled and `operator new[](size_t, align_val_t)` has been overridden, "
182
178
" but `operator new[](size_t, align_val_t, nothrow_t)` has not been overridden. This is problematic because "
183
179
" `operator new[](size_t, align_val_t, nothrow_t)` must call `operator new[](size_t, align_val_t)`, which will "
184
180
" terminate in case it fails to allocate, making it impossible for `operator new[](size_t, align_val_t, "
185
181
" nothrow_t)` to fulfill its contract (since it should return nullptr upon failure). Please make sure you "
186
- " override "
187
- " `operator new[](size_t, align_val_t, nothrow_t)` as well." );
182
+ " override `operator new[](size_t, align_val_t, nothrow_t)` as well." );
188
183
# endif
189
184
190
185
return operator_new_aligned_impl (size, alignment);
0 commit comments