diff options
Diffstat (limited to 'libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp')
| -rw-r--r-- | libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp | 33 |
1 files changed, 21 insertions, 12 deletions
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 <class S> -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 <class S> -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<char>()); testAlloc(S(), S("1234567890"), std::allocator<char>()); testAlloc(S(), S("12345678901234567890"), std::allocator<char>()); - } + } - { // LWG#5579 make sure assign takes the allocators where appropriate + { // LWG#5579 make sure assign takes the allocators where appropriate typedef other_allocator<char> A; // has POCCA --> true typedef std::basic_string<char, std::char_traits<char>, 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<char, std::char_traits<char>, min_allocator<char>> 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<char>()); testAlloc(S(), S("1234567890"), min_allocator<char>()); testAlloc(S(), S("12345678901234567890"), min_allocator<char>()); - } + } #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; |
