[libc++] Use a different smart ptr type alias (#102089)
The `_SP` type is used by some C libraries and this alias could conflict with it. (cherry picked from commit 7951673d408ee64744d0b924a49db78e8243d876)
This commit is contained in:
parent
dec94b04c0
commit
a3b18fcd24
@ -63,17 +63,17 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
using _SP = __pointer_of_or_t<_Smart, _Pointer>;
|
||||
using _SmartPtr = __pointer_of_or_t<_Smart, _Pointer>;
|
||||
if constexpr (is_pointer_v<_Smart>) {
|
||||
std::apply([&](auto&&... __args) { __s_ = _Smart(static_cast<_SP>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::apply([&](auto&&... __args) { __s_ = _Smart(static_cast<_SmartPtr>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::move(__a_));
|
||||
} else if constexpr (__resettable_smart_pointer_with_args<_Smart, _Pointer, _Args...>) {
|
||||
std::apply([&](auto&&... __args) { __s_.reset(static_cast<_SP>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::apply([&](auto&&... __args) { __s_.reset(static_cast<_SmartPtr>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::move(__a_));
|
||||
} else {
|
||||
static_assert(is_constructible_v<_Smart, _SP, _Args...>,
|
||||
static_assert(is_constructible_v<_Smart, _SmartPtr, _Args...>,
|
||||
"The smart pointer must be constructible from arguments of types _Smart, _Pointer, _Args...");
|
||||
std::apply([&](auto&&... __args) { __s_ = _Smart(static_cast<_SP>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::apply([&](auto&&... __args) { __s_ = _Smart(static_cast<_SmartPtr>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::move(__a_));
|
||||
}
|
||||
}
|
||||
|
@ -58,14 +58,14 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
using _SP = __pointer_of_or_t<_Smart, _Pointer>;
|
||||
using _SmartPtr = __pointer_of_or_t<_Smart, _Pointer>;
|
||||
if constexpr (__resettable_smart_pointer_with_args<_Smart, _Pointer, _Args...>) {
|
||||
std::apply([&](auto&&... __args) { __s_.reset(static_cast<_SP>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::apply([&](auto&&... __args) { __s_.reset(static_cast<_SmartPtr>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::move(__a_));
|
||||
} else {
|
||||
static_assert(is_constructible_v<_Smart, _SP, _Args...>,
|
||||
static_assert(is_constructible_v<_Smart, _SmartPtr, _Args...>,
|
||||
"The smart pointer must be constructible from arguments of types _Smart, _Pointer, _Args...");
|
||||
std::apply([&](auto&&... __args) { __s_ = _Smart(static_cast<_SP>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::apply([&](auto&&... __args) { __s_ = _Smart(static_cast<_SmartPtr>(__p_), std::forward<_Args>(__args)...); },
|
||||
std::move(__a_));
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,8 @@ sys.path.append(sys.argv[1])
|
||||
from libcxx.header_information import lit_header_restrictions, public_headers
|
||||
|
||||
for header in public_headers:
|
||||
print(f"""\
|
||||
print(
|
||||
f"""\
|
||||
//--- {header}.compile.pass.cpp
|
||||
{lit_header_restrictions.get(header, '')}
|
||||
|
||||
@ -162,6 +163,18 @@ for header in public_headers:
|
||||
#define erase SYSTEM_RESERVED_NAME
|
||||
#define refresh SYSTEM_RESERVED_NAME
|
||||
|
||||
// Dinkumware libc ctype.h uses these definitions
|
||||
#define _XA SYSTEM_RESERVED_NAME
|
||||
#define _XS SYSTEM_RESERVED_NAME
|
||||
#define _BB SYSTEM_RESERVED_NAME
|
||||
#define _CN SYSTEM_RESERVED_NAME
|
||||
#define _DI SYSTEM_RESERVED_NAME
|
||||
#define _LO SYSTEM_RESERVED_NAME
|
||||
#define _PU SYSTEM_RESERVED_NAME
|
||||
#define _SP SYSTEM_RESERVED_NAME
|
||||
#define _UP SYSTEM_RESERVED_NAME
|
||||
#define _XD SYSTEM_RESERVED_NAME
|
||||
|
||||
#include <{header}>
|
||||
|
||||
// Make sure we don't swallow the definition of the macros we push/pop
|
||||
@ -172,4 +185,5 @@ static_assert(__builtin_strcmp(STRINGIFY(max), STRINGIFY(SYSTEM_RESERVED_NAME))
|
||||
static_assert(__builtin_strcmp(STRINGIFY(move), STRINGIFY(SYSTEM_RESERVED_NAME)) == 0, "");
|
||||
static_assert(__builtin_strcmp(STRINGIFY(erase), STRINGIFY(SYSTEM_RESERVED_NAME)) == 0, "");
|
||||
static_assert(__builtin_strcmp(STRINGIFY(refresh), STRINGIFY(SYSTEM_RESERVED_NAME)) == 0, "");
|
||||
""")
|
||||
"""
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user