diff options
Diffstat (limited to 'libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp')
| -rw-r--r-- | libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp index 6da03847e0d2..55506b37d25d 100644 --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp @@ -23,7 +23,7 @@ struct veryLarge }; template <class S> -void +TEST_CONSTEXPR_CXX20 void test(S s, typename S::value_type c, S expected) { s.push_back(c); @@ -31,31 +31,40 @@ test(S s, typename S::value_type c, S expected) assert(s == expected); } -int main(int, char**) -{ - { +bool test() { + { typedef std::string S; test(S(), 'a', S(1, 'a')); test(S("12345"), 'a', S("12345a")); test(S("12345678901234567890"), 'a', S("12345678901234567890a")); - } + } #if TEST_STD_VER >= 11 - { + { typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; test(S(), 'a', S(1, 'a')); test(S("12345"), 'a', S("12345a")); test(S("12345678901234567890"), 'a', S("12345678901234567890a")); - } + } #endif - { + { // https://llvm.org/PR31454 std::basic_string<veryLarge> s; veryLarge vl = {}; s.push_back(vl); s.push_back(vl); s.push_back(vl); - } + } + + return true; +} + +int main(int, char**) +{ + test(); +#if TEST_STD_VER > 17 + // static_assert(test()); +#endif return 0; } |
