Fix PR26961 - Add default constructor to std::pointer_safety struct.
In ABI v1 libc++ implements std::pointer_safety as a class type instead of an enumeration. However this class type does not provide a default constructor as it should. This patch adds that default constructor. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@291059 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -14,13 +14,33 @@
|
||||
#include <memory>
|
||||
#include <cassert>
|
||||
|
||||
#include "test_macros.h"
|
||||
|
||||
// libc++ doesn't offer std::pointer_safety in C++03 under the new ABI
|
||||
#if TEST_STD_VER < 11 && defined(_LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE)
|
||||
#define TEST_IS_UNSUPPORTED
|
||||
#endif
|
||||
|
||||
#ifndef TEST_IS_UNSUPPORTED
|
||||
void test_pr26961() {
|
||||
std::pointer_safety d;
|
||||
d = std::get_pointer_safety();
|
||||
assert(d == std::get_pointer_safety());
|
||||
}
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
// Test that std::pointer_safety is still offered in C++03 under the old ABI.
|
||||
#ifndef _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE
|
||||
#ifndef TEST_IS_UNSUPPORTED
|
||||
{
|
||||
// Test that std::pointer_safety is still offered in C++03 under the old ABI.
|
||||
std::pointer_safety r = std::get_pointer_safety();
|
||||
assert(r == std::pointer_safety::relaxed ||
|
||||
r == std::pointer_safety::preferred ||
|
||||
r == std::pointer_safety::strict);
|
||||
}
|
||||
{
|
||||
test_pr26961();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user