@@ -43,7 +43,7 @@ static void* operator_new_impl(std::size_t size) {
4343 return p;
4444}
4545
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 {
4747 void * p = operator_new_impl (size);
4848 if (p == nullptr )
4949 __throw_bad_alloc_shim ();
@@ -54,7 +54,7 @@ _LIBCPP_WEAK void* operator new(size_t size, const std::nothrow_t&) noexcept {
5454# if !_LIBCPP_HAS_EXCEPTIONS
5555# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
5656 _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 >( )),
5858 " libc++ was configured with exceptions disabled and `operator new(size_t)` has been overridden, "
5959 " but `operator new(size_t, nothrow_t)` has not been overridden. This is problematic because "
6060 " `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 {
7474# endif
7575}
7676
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); }
8078
8179_LIBCPP_WEAK void * operator new [](size_t size, const std::nothrow_t &) noexcept {
8280# if !_LIBCPP_HAS_EXCEPTIONS
8381# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
8482 _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 []>( )),
8684 " libc++ was configured with exceptions disabled and `operator new[](size_t)` has been overridden, "
8785 " but `operator new[](size_t, nothrow_t)` has not been overridden. This is problematic because "
8886 " `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
136134 return p;
137135}
138136
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 {
141138 void * p = operator_new_aligned_impl (size, alignment);
142139 if (p == nullptr )
143140 __throw_bad_alloc_shim ();
@@ -148,7 +145,7 @@ _LIBCPP_WEAK void* operator new(size_t size, std::align_val_t alignment, const s
148145# if !_LIBCPP_HAS_EXCEPTIONS
149146# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
150147 _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 >( )),
152149 " libc++ was configured with exceptions disabled and `operator new(size_t, align_val_t)` has been overridden, "
153150 " but `operator new(size_t, align_val_t, nothrow_t)` has not been overridden. This is problematic because "
154151 " `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
168165# endif
169166}
170167
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 {
173169 return ::operator new (size, alignment);
174170}
175171
176172_LIBCPP_WEAK void * operator new [](size_t size, std::align_val_t alignment, const std::nothrow_t &) noexcept {
177173# if !_LIBCPP_HAS_EXCEPTIONS
178174# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
179175 _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 []>( )),
181177 " libc++ was configured with exceptions disabled and `operator new[](size_t, align_val_t)` has been overridden, "
182178 " but `operator new[](size_t, align_val_t, nothrow_t)` has not been overridden. This is problematic because "
183179 " `operator new[](size_t, align_val_t, nothrow_t)` must call `operator new[](size_t, align_val_t)`, which will "
184180 " terminate in case it fails to allocate, making it impossible for `operator new[](size_t, align_val_t, "
185181 " 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." );
188183# endif
189184
190185 return operator_new_aligned_impl (size, alignment);
0 commit comments