From dcffa7d3e140cf2e2a80f93168b40c449bc1d230 Mon Sep 17 00:00:00 2001 From: Nikolas Klauser Date: Thu, 10 Feb 2022 16:51:04 +0100 Subject: [libc++] Prepare string.modifiers tests for constexpr Reviewed By: ldionne, #libc Spies: libcxx-commits Differential Revision: https://reviews.llvm.org/D119329 --- .../string.modifiers/string_assign/string.pass.cpp | 33 ++++++++++++++-------- 1 file changed, 21 insertions(+), 12 deletions(-) (limited to 'libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp') diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp index fae45c80de0c..8787aba6b120 100644 --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp @@ -19,7 +19,7 @@ #include "test_allocator.h" template -void +TEST_CONSTEXPR_CXX20 void test(S s, S str, S expected) { s.assign(str); @@ -28,7 +28,7 @@ test(S s, S str, S expected) } template -void +TEST_CONSTEXPR_CXX20 void testAlloc(S s, S str, const typename S::allocator_type& a) { s.assign(str); @@ -37,9 +37,8 @@ testAlloc(S s, S str, const typename S::allocator_type& a) assert(s.get_allocator() == a); } -int main(int, char**) -{ - { +bool test() { + { typedef std::string S; test(S(), S(), S()); test(S(), S("12345"), S("12345")); @@ -66,19 +65,19 @@ int main(int, char**) testAlloc(S(), S("12345"), std::allocator()); testAlloc(S(), S("1234567890"), std::allocator()); testAlloc(S(), S("12345678901234567890"), std::allocator()); - } + } - { // LWG#5579 make sure assign takes the allocators where appropriate + { // LWG#5579 make sure assign takes the allocators where appropriate typedef other_allocator A; // has POCCA --> true typedef std::basic_string, A> S; testAlloc(S(A(5)), S(A(3)), A(3)); testAlloc(S(A(5)), S("1"), A()); testAlloc(S(A(5)), S("1", A(7)), A(7)); testAlloc(S(A(5)), S("1234567890123456789012345678901234567890123456789012345678901234567890", A(7)), A(7)); - } + } #if TEST_STD_VER >= 11 - { + { typedef std::basic_string, min_allocator> S; test(S(), S(), S()); test(S(), S("12345"), S("12345")); @@ -105,13 +104,23 @@ int main(int, char**) testAlloc(S(), S("12345"), min_allocator()); testAlloc(S(), S("1234567890"), min_allocator()); testAlloc(S(), S("12345678901234567890"), min_allocator()); - } + } #endif #if TEST_STD_VER > 14 - { + { typedef std::string S; static_assert(noexcept(S().assign(S())), ""); // LWG#2063 - } + } +#endif + + return true; +} + +int main(int, char**) +{ + test(); +#if TEST_STD_VER > 17 + // static_assert(test()); #endif return 0; -- cgit v1.2.3