diff --git a/libcxx/include/__memory/raw_storage_iterator.h b/libcxx/include/__memory/raw_storage_iterator.h --- a/libcxx/include/__memory/raw_storage_iterator.h +++ b/libcxx/include/__memory/raw_storage_iterator.h @@ -25,8 +25,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD +#if _LIBCPP_STD_VER <= 17 template -class _LIBCPP_TEMPLATE_VIS raw_storage_iterator +class _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 raw_storage_iterator : public iterator + +#include "test_macros.h" + +struct A { + explicit A(int i); + bool operator==(int i) const; + A* operator&() = delete; +}; + +void f() { + struct S {}; + using Storage = std::aligned_storage<3 * sizeof(S), std::alignment_of::value>::type; + Storage buffer; + std::raw_storage_iterator it((S*)&buffer); // expected-warning {{'raw_storage_iterator' is deprecated}} +} diff --git a/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.base.pass.cpp b/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.base.pass.cpp --- a/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.base.pass.cpp +++ b/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.base.pass.cpp @@ -6,6 +6,8 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: c++20, c++2b + // raw_storage_iterator #include @@ -14,6 +16,9 @@ #include "test_macros.h" +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + #if TEST_STD_VER >= 11 #define DELETE_FUNCTION = delete #else diff --git a/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp b/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp --- a/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp +++ b/libcxx/test/std/utilities/memory/storage.iterator/raw_storage_iterator.pass.cpp @@ -6,8 +6,13 @@ // //===----------------------------------------------------------------------===// +// UNSUPPORTED: c++20, c++2b + // raw_storage_iterator +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + #include #include #include