summaryrefslogtreecommitdiff
path: root/test/std/strings
diff options
context:
space:
mode:
Diffstat (limited to 'test/std/strings')
-rw-r--r--test/std/strings/basic.string.literals/literal.pass.cpp13
-rw-r--r--test/std/strings/basic.string.literals/literal1.fail.cpp7
-rw-r--r--test/std/strings/basic.string.literals/literal1.pass.cpp5
-rw-r--r--test/std/strings/basic.string.literals/literal2.fail.cpp7
-rw-r--r--test/std/strings/basic.string.literals/literal2.pass.cpp5
-rw-r--r--test/std/strings/basic.string.literals/literal3.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.access/at.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/back.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/db_back.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/db_cback.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/db_cfront.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/db_cindex.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/db_front.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/db_index.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/front.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.access/index.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.capacity/capacity.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.capacity/clear.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.capacity/empty.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.capacity/length.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.capacity/max_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.capacity/reserve.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.capacity/resize_size.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.capacity/size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.cons/alloc.pass.cpp8
-rw-r--r--test/std/strings/basic.string/string.cons/char_assignment.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.cons/copy.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp4
-rw-r--r--test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp8
-rw-r--r--test/std/strings/basic.string/string.cons/initializer_list.pass.cpp6
-rw-r--r--test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp6
-rw-r--r--test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp7
-rw-r--r--test/std/strings/basic.string/string.cons/move.pass.cpp15
-rw-r--r--test/std/strings/basic.string/string.cons/move_alloc.pass.cpp19
-rw-r--r--test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp9
-rw-r--r--test/std/strings/basic.string/string.cons/move_assignment.pass.cpp15
-rw-r--r--test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp4
-rw-r--r--test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp7
-rw-r--r--test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp7
-rw-r--r--test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp11
-rw-r--r--test/std/strings/basic.string/string.cons/substr.pass.cpp33
-rw-r--r--test/std/strings/basic.string/string.iterators/begin.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/cbegin.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/cend.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/crbegin.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/crend.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/end.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/iterators.pass.cpp6
-rw-r--r--test/std/strings/basic.string/string.iterators/rbegin.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.iterators/rend.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp7
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp8
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp7
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp13
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp36
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db1.pass.cpp50
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db2.pass.cpp52
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db1.pass.cpp50
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db2.pass.cpp50
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db3.pass.cpp50
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db4.pass.cpp48
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp16
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp9
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp16
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp8
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp15
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp6
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp8
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp3
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp7
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp7
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp10
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp6
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp46
-rw-r--r--test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp2
-rw-r--r--test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp5
-rw-r--r--test/std/strings/basic.string/string.require/contiguous.pass.cpp2
-rw-r--r--test/std/strings/basic.string/types.pass.cpp2
-rw-r--r--test/std/strings/c.strings/cstring.pass.cpp16
-rw-r--r--test/std/strings/c.strings/cwchar.pass.cpp34
-rw-r--r--test/std/strings/c.strings/version_cctype.pass.cpp20
-rw-r--r--test/std/strings/c.strings/version_cstring.pass.cpp20
-rw-r--r--test/std/strings/c.strings/version_cuchar.pass.cpp22
-rw-r--r--test/std/strings/c.strings/version_cwchar.pass.cpp20
-rw-r--r--test/std/strings/c.strings/version_cwctype.pass.cpp20
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp21
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp4
-rw-r--r--test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp4
-rw-r--r--test/std/strings/version.pass.cpp20
207 files changed, 532 insertions, 823 deletions
diff --git a/test/std/strings/basic.string.literals/literal.pass.cpp b/test/std/strings/basic.string.literals/literal.pass.cpp
index dbb5f681395b..d121e25ba270 100644
--- a/test/std/strings/basic.string.literals/literal.pass.cpp
+++ b/test/std/strings/basic.string.literals/literal.pass.cpp
@@ -7,12 +7,14 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11
+
#include <string>
#include <cassert>
int main()
{
-#if _LIBCPP_STD_VER > 11
using namespace std::literals::string_literals;
static_assert ( std::is_same<decltype( "Hi"s), std::string>::value, "" );
@@ -20,28 +22,27 @@ int main()
static_assert ( std::is_same<decltype( L"Hi"s), std::wstring>::value, "" );
static_assert ( std::is_same<decltype( u"Hi"s), std::u16string>::value, "" );
static_assert ( std::is_same<decltype( U"Hi"s), std::u32string>::value, "" );
-
+
std::string foo;
std::wstring Lfoo;
std::u16string ufoo;
std::u32string Ufoo;
-
+
foo = ""s; assert( foo.size() == 0);
foo = u8""s; assert( foo.size() == 0);
Lfoo = L""s; assert(Lfoo.size() == 0);
ufoo = u""s; assert(ufoo.size() == 0);
Ufoo = U""s; assert(Ufoo.size() == 0);
-
+
foo = " "s; assert( foo.size() == 1);
foo = u8" "s; assert( foo.size() == 1);
Lfoo = L" "s; assert(Lfoo.size() == 1);
ufoo = u" "s; assert(ufoo.size() == 1);
Ufoo = U" "s; assert(Ufoo.size() == 1);
-
+
foo = "ABC"s; assert( foo == "ABC"); assert( foo == std::string ( "ABC"));
foo = u8"ABC"s; assert( foo == u8"ABC"); assert( foo == std::string (u8"ABC"));
Lfoo = L"ABC"s; assert(Lfoo == L"ABC"); assert(Lfoo == std::wstring ( L"ABC"));
ufoo = u"ABC"s; assert(ufoo == u"ABC"); assert(ufoo == std::u16string( u"ABC"));
Ufoo = U"ABC"s; assert(Ufoo == U"ABC"); assert(Ufoo == std::u32string( U"ABC"));
-#endif
}
diff --git a/test/std/strings/basic.string.literals/literal1.fail.cpp b/test/std/strings/basic.string.literals/literal1.fail.cpp
index 6ba0b30d458d..721440d8a3a5 100644
--- a/test/std/strings/basic.string.literals/literal1.fail.cpp
+++ b/test/std/strings/basic.string.literals/literal1.fail.cpp
@@ -7,16 +7,15 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11
+
#include <string>
#include <cassert>
int main()
{
-#if _LIBCPP_STD_VER > 11
using std::string;
string foo = ""s; // should fail w/conversion operator not found
-#else
-#error
-#endif
}
diff --git a/test/std/strings/basic.string.literals/literal1.pass.cpp b/test/std/strings/basic.string.literals/literal1.pass.cpp
index f5143746b0bb..f0b7b463f85e 100644
--- a/test/std/strings/basic.string.literals/literal1.pass.cpp
+++ b/test/std/strings/basic.string.literals/literal1.pass.cpp
@@ -7,14 +7,15 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11
+
#include <string>
#include <cassert>
int main()
{
-#if _LIBCPP_STD_VER > 11
using namespace std::literals;
std::string foo = ""s;
-#endif
}
diff --git a/test/std/strings/basic.string.literals/literal2.fail.cpp b/test/std/strings/basic.string.literals/literal2.fail.cpp
index 68f1d254e327..99f92fde9724 100644
--- a/test/std/strings/basic.string.literals/literal2.fail.cpp
+++ b/test/std/strings/basic.string.literals/literal2.fail.cpp
@@ -7,14 +7,13 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11
+
#include <string>
#include <cassert>
int main()
{
-#if _LIBCPP_STD_VER > 11
std::string foo = ""s; // should fail w/conversion operator not found
-#else
-#error
-#endif
}
diff --git a/test/std/strings/basic.string.literals/literal2.pass.cpp b/test/std/strings/basic.string.literals/literal2.pass.cpp
index 86d28e60e52b..3cc2936a115d 100644
--- a/test/std/strings/basic.string.literals/literal2.pass.cpp
+++ b/test/std/strings/basic.string.literals/literal2.pass.cpp
@@ -7,14 +7,15 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11
+
#include <string>
#include <cassert>
int main()
{
-#if _LIBCPP_STD_VER > 11
using namespace std::literals::string_literals;
std::string foo = ""s;
-#endif
}
diff --git a/test/std/strings/basic.string.literals/literal3.pass.cpp b/test/std/strings/basic.string.literals/literal3.pass.cpp
index 98e3e40e058c..d6e8c8f88ecd 100644
--- a/test/std/strings/basic.string.literals/literal3.pass.cpp
+++ b/test/std/strings/basic.string.literals/literal3.pass.cpp
@@ -7,14 +7,15 @@
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++98, c++03, c++11
+
#include <string>
#include <cassert>
int main()
{
-#if _LIBCPP_STD_VER > 11
using namespace std;
string foo = ""s;
-#endif
}
diff --git a/test/std/strings/basic.string/string.access/at.pass.cpp b/test/std/strings/basic.string/string.access/at.pass.cpp
index 87998e18c581..8dc0c57cb7b4 100644
--- a/test/std/strings/basic.string/string.access/at.pass.cpp
+++ b/test/std/strings/basic.string/string.access/at.pass.cpp
@@ -46,7 +46,7 @@ int main()
test(S("123"), 2);
test(S("123"), 3);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), 0);
diff --git a/test/std/strings/basic.string/string.access/back.pass.cpp b/test/std/strings/basic.string/string.access/back.pass.cpp
index e91521441b80..adf22bf0d27b 100644
--- a/test/std/strings/basic.string/string.access/back.pass.cpp
+++ b/test/std/strings/basic.string/string.access/back.pass.cpp
@@ -39,7 +39,7 @@ int main()
test(S("1"));
test(S("1234567890123456789012345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S("1"));
diff --git a/test/std/strings/basic.string/string.access/db_back.pass.cpp b/test/std/strings/basic.string/string.access/db_back.pass.cpp
index 2b31fabc7c70..e65ef2cef88d 100644
--- a/test/std/strings/basic.string/string.access/db_back.pass.cpp
+++ b/test/std/strings/basic.string/string.access/db_back.pass.cpp
@@ -33,7 +33,7 @@ int main()
assert(s.back() == 0);
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s(1, '\0');
diff --git a/test/std/strings/basic.string/string.access/db_cback.pass.cpp b/test/std/strings/basic.string/string.access/db_cback.pass.cpp
index 7feb4239f07a..ee99aee10e32 100644
--- a/test/std/strings/basic.string/string.access/db_cback.pass.cpp
+++ b/test/std/strings/basic.string/string.access/db_cback.pass.cpp
@@ -31,7 +31,7 @@ int main()
assert(s.back() == 0);
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
const S s;
diff --git a/test/std/strings/basic.string/string.access/db_cfront.pass.cpp b/test/std/strings/basic.string/string.access/db_cfront.pass.cpp
index 9f7785b85cda..13049624534f 100644
--- a/test/std/strings/basic.string/string.access/db_cfront.pass.cpp
+++ b/test/std/strings/basic.string/string.access/db_cfront.pass.cpp
@@ -31,7 +31,7 @@ int main()
assert(s.front() == 0);
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
const S s;
diff --git a/test/std/strings/basic.string/string.access/db_cindex.pass.cpp b/test/std/strings/basic.string/string.access/db_cindex.pass.cpp
index 6294200104ba..f96ead7bf251 100644
--- a/test/std/strings/basic.string/string.access/db_cindex.pass.cpp
+++ b/test/std/strings/basic.string/string.access/db_cindex.pass.cpp
@@ -32,7 +32,7 @@ int main()
assert(s[1] == 0);
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
const S s;
diff --git a/test/std/strings/basic.string/string.access/db_front.pass.cpp b/test/std/strings/basic.string/string.access/db_front.pass.cpp
index ff675bc5c217..881a5ede3738 100644
--- a/test/std/strings/basic.string/string.access/db_front.pass.cpp
+++ b/test/std/strings/basic.string/string.access/db_front.pass.cpp
@@ -33,7 +33,7 @@ int main()
assert(s.front() == 0);
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s(1, '\0');
diff --git a/test/std/strings/basic.string/string.access/db_index.pass.cpp b/test/std/strings/basic.string/string.access/db_index.pass.cpp
index b20e20188023..981a55d11037 100644
--- a/test/std/strings/basic.string/string.access/db_index.pass.cpp
+++ b/test/std/strings/basic.string/string.access/db_index.pass.cpp
@@ -32,7 +32,7 @@ int main()
assert(s[1] == 0);
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s;
diff --git a/test/std/strings/basic.string/string.access/front.pass.cpp b/test/std/strings/basic.string/string.access/front.pass.cpp
index ed80916f16f0..5400ddb39dc0 100644
--- a/test/std/strings/basic.string/string.access/front.pass.cpp
+++ b/test/std/strings/basic.string/string.access/front.pass.cpp
@@ -39,7 +39,7 @@ int main()
test(S("1"));
test(S("1234567890123456789012345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S("1"));
diff --git a/test/std/strings/basic.string/string.access/index.pass.cpp b/test/std/strings/basic.string/string.access/index.pass.cpp
index cd3162385160..b45a399320ba 100644
--- a/test/std/strings/basic.string/string.access/index.pass.cpp
+++ b/test/std/strings/basic.string/string.access/index.pass.cpp
@@ -36,7 +36,7 @@ int main()
const S s2 = S();
assert(s2[0] == '\0');
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s("0123456789");
diff --git a/test/std/strings/basic.string/string.capacity/capacity.pass.cpp b/test/std/strings/basic.string/string.capacity/capacity.pass.cpp
index c05346a633e9..4b09c096792c 100644
--- a/test/std/strings/basic.string/string.capacity/capacity.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/capacity.pass.cpp
@@ -49,7 +49,7 @@ int main()
s.erase(50);
test(s);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s;
diff --git a/test/std/strings/basic.string/string.capacity/clear.pass.cpp b/test/std/strings/basic.string/string.capacity/clear.pass.cpp
index b73af7599344..e0254c0460e4 100644
--- a/test/std/strings/basic.string/string.capacity/clear.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/clear.pass.cpp
@@ -39,7 +39,7 @@ int main()
s.erase(50);
test(s);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s;
diff --git a/test/std/strings/basic.string/string.capacity/empty.pass.cpp b/test/std/strings/basic.string/string.capacity/empty.pass.cpp
index ac65f5144858..fbed5c36c3f4 100644
--- a/test/std/strings/basic.string/string.capacity/empty.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/empty.pass.cpp
@@ -31,7 +31,7 @@ int main()
test(S("123"));
test(S("12345678901234567890123456789012345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.capacity/length.pass.cpp b/test/std/strings/basic.string/string.capacity/length.pass.cpp
index d3ae1aaee036..13e966dc619e 100644
--- a/test/std/strings/basic.string/string.capacity/length.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/length.pass.cpp
@@ -31,7 +31,7 @@ int main()
test(S("123"));
test(S("12345678901234567890123456789012345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.capacity/max_size.pass.cpp b/test/std/strings/basic.string/string.capacity/max_size.pass.cpp
index d857be28a6c9..fca14ddca561 100644
--- a/test/std/strings/basic.string/string.capacity/max_size.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/max_size.pass.cpp
@@ -63,7 +63,7 @@ int main()
test(S("123"));
test(S("12345678901234567890123456789012345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp b/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
index 9c8f67950fb4..e92a0e1054f6 100644
--- a/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
@@ -37,7 +37,7 @@ int main()
test(S("123"));
test(S("12345678901234567890123456789012345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.capacity/reserve.pass.cpp b/test/std/strings/basic.string/string.capacity/reserve.pass.cpp
index 569ca760c7ce..b2c254d1fb25 100644
--- a/test/std/strings/basic.string/string.capacity/reserve.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/reserve.pass.cpp
@@ -16,6 +16,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -25,7 +26,7 @@ test(S s)
typename S::size_type old_cap = s.capacity();
S s0 = s;
s.reserve();
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == s0);
assert(s.capacity() <= old_cap);
assert(s.capacity() >= s.size());
@@ -83,7 +84,7 @@ int main()
test(s, S::npos);
}
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
{
diff --git a/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp b/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp
index 16eca38e8012..558941599578 100644
--- a/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp
@@ -16,6 +16,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -25,7 +26,7 @@ test(S s, typename S::size_type n, S expected)
try
{
s.resize(n);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(n <= s.max_size());
assert(s == expected);
}
@@ -56,7 +57,7 @@ int main()
S("12345678901234567890123456789012345678901234567890\0\0\0\0\0\0\0\0\0\0", 60));
test(S(), S::npos, S("not going to happen"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), 0, S());
diff --git a/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp b/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp
index cb01be01f34b..79f972b2fee3 100644
--- a/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp
@@ -16,6 +16,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -25,7 +26,7 @@ test(S s, typename S::size_type n, typename S::value_type c, S expected)
try
{
s.resize(n, c);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(n <= s.max_size());
assert(s == expected);
}
@@ -56,7 +57,7 @@ int main()
S("12345678901234567890123456789012345678901234567890aaaaaaaaaa"));
test(S(), S::npos, 'a', S("not going to happen"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), 0, 'a', S());
diff --git a/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp b/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp
index aacbffd098f0..656ea1d11a7c 100644
--- a/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -23,7 +24,7 @@ test(S s)
typename S::size_type old_cap = s.capacity();
S s0 = s;
s.shrink_to_fit();
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == s0);
assert(s.capacity() <= old_cap);
assert(s.capacity() >= s.size());
@@ -44,7 +45,7 @@ int main()
s.erase(50);
test(s);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s;
diff --git a/test/std/strings/basic.string/string.capacity/size.pass.cpp b/test/std/strings/basic.string/string.capacity/size.pass.cpp
index 21b475a8113f..4657aea442f7 100644
--- a/test/std/strings/basic.string/string.capacity/size.pass.cpp
+++ b/test/std/strings/basic.string/string.capacity/size.pass.cpp
@@ -31,7 +31,7 @@ int main()
test(S("123"), 3);
test(S("12345678901234567890123456789012345678901234567890"), 50);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), 0);
diff --git a/test/std/strings/basic.string/string.cons/alloc.pass.cpp b/test/std/strings/basic.string/string.cons/alloc.pass.cpp
index 1c4f2044834e..a803d331b8f6 100644
--- a/test/std/strings/basic.string/string.cons/alloc.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/alloc.pass.cpp
@@ -29,7 +29,7 @@ test()
static_assert((noexcept(S()) == noexcept(typename S::allocator_type())), "" );
#endif
S s;
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s.data());
assert(s.size() == 0);
assert(s.capacity() >= s.size());
@@ -42,7 +42,7 @@ test()
static_assert((noexcept(S(typename S::allocator_type())) == std::is_nothrow_copy_constructible<typename S::allocator_type>::value), "" );
#endif
S s(typename S::allocator_type(5));
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s.data());
assert(s.size() == 0);
assert(s.capacity() >= s.size());
@@ -63,7 +63,7 @@ test2()
static_assert((noexcept(S()) == noexcept(typename S::allocator_type())), "" );
#endif
S s;
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s.data());
assert(s.size() == 0);
assert(s.capacity() >= s.size());
@@ -76,7 +76,7 @@ test2()
static_assert((noexcept(S(typename S::allocator_type())) == std::is_nothrow_copy_constructible<typename S::allocator_type>::value), "" );
#endif
S s(typename S::allocator_type{});
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s.data());
assert(s.size() == 0);
assert(s.capacity() >= s.size());
diff --git a/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp b/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp
index 1c582bc51637..f6bacb70e4ce 100644
--- a/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ test(S s1, typename S::value_type s2)
{
typedef typename S::traits_type T;
s1 = s2;
- assert(s1.__invariants());
+ LIBCPP_ASSERT(s1.__invariants());
assert(s1.size() == 1);
assert(T::eq(s1[0], s2));
assert(s1.capacity() >= s1.size());
@@ -37,7 +38,7 @@ int main()
test(S("123456789"), 'a');
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), 'a');
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), 'a');
diff --git a/test/std/strings/basic.string/string.cons/copy.pass.cpp b/test/std/strings/basic.string/string.cons/copy.pass.cpp
index 9c9fc3230668..cc4deb992a8b 100644
--- a/test/std/strings/basic.string/string.cons/copy.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/copy.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -22,7 +23,7 @@ void
test(S s1)
{
S s2 = s1;
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2 == s1);
assert(s2.capacity() >= s2.size());
assert(s2.get_allocator() == s1.get_allocator());
@@ -37,7 +38,7 @@ int main()
test(S("1", A(5)));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A(7)));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
diff --git a/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp b/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp
index cf8021019a2e..b3447b94b803 100644
--- a/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -22,7 +23,7 @@ void
test(S s1, const typename S::allocator_type& a)
{
S s2(s1, a);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2 == s1);
assert(s2.capacity() >= s2.size());
assert(s2.get_allocator() == a);
@@ -37,7 +38,7 @@ int main()
test(S("1"), A(5));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), A(7));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
diff --git a/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp b/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp
index ccb6c599974b..b1e9108e90ba 100644
--- a/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp
@@ -15,6 +15,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ void
test(S s1, const S& s2)
{
s1 = s2;
- assert(s1.__invariants());
+ LIBCPP_ASSERT(s1.__invariants());
assert(s1 == s2);
assert(s1.capacity() >= s1.size());
}
@@ -47,7 +48,7 @@ int main()
"1234567890123456789012345678901234567890123456789012345678901234567890"),
S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), S());
diff --git a/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp b/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp
index af117103d827..87698ec55103 100644
--- a/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/default_noexcept.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string()
@@ -29,7 +31,6 @@ struct some_alloc
int main()
{
-#if __has_feature(cxx_noexcept)
{
typedef std::string C;
static_assert(std::is_nothrow_default_constructible<C>::value, "");
@@ -42,5 +43,4 @@ int main()
typedef std::basic_string<char, std::char_traits<char>, some_alloc<char>> C;
static_assert(!std::is_nothrow_default_constructible<C>::value, "");
}
-#endif
}
diff --git a/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp b/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
index b3cc127fbc46..c4ac1f1a47bb 100644
--- a/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/dtor_noexcept.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// ~basic_string() // implied noexcept;
@@ -16,8 +18,6 @@
#include "test_allocator.h"
-#if __has_feature(cxx_noexcept)
-
template <class T>
struct some_alloc
{
@@ -26,11 +26,8 @@ struct some_alloc
~some_alloc() noexcept(false);
};
-#endif
-
int main()
{
-#if __has_feature(cxx_noexcept)
{
typedef std::string C;
static_assert(std::is_nothrow_destructible<C>::value, "");
@@ -43,5 +40,4 @@ int main()
typedef std::basic_string<char, std::char_traits<char>, some_alloc<char>> C;
static_assert(!std::is_nothrow_destructible<C>::value, "");
}
-#endif
}
diff --git a/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp b/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
index d6ff8504e9da..3007b9e8f68c 100644
--- a/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string(initializer_list<charT> il, const Allocator& a = Allocator());
@@ -19,7 +21,6 @@
int main()
{
-#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
{
std::string s = {'a', 'b', 'c'};
assert(s == "abc");
@@ -29,7 +30,6 @@ int main()
s = {L'a', L'b', L'c'};
assert(s == L"abc");
}
-#if __cplusplus >= 201103L
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s = {'a', 'b', 'c'};
@@ -41,6 +41,4 @@ int main()
s = {L'a', L'b', L'c'};
assert(s == L"abc");
}
-#endif
-#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
}
diff --git a/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp b/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp
index 753076895359..20279c853eaf 100644
--- a/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string& operator=(initializer_list<charT> il);
@@ -18,19 +20,15 @@
int main()
{
-#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
{
std::string s;
s = {'a', 'b', 'c'};
assert(s == "abc");
}
-#if __cplusplus >= 201103L
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s;
s = {'a', 'b', 'c'};
assert(s == "abc");
}
-#endif
-#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
}
diff --git a/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp b/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp
index 664cb80b10fe..cb0792ab23b3 100644
--- a/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp
@@ -17,6 +17,7 @@
#include <iterator>
#include <cassert>
+#include "test_macros.h"
#include "test_allocator.h"
#include "../input_iterator.h"
#include "min_allocator.h"
@@ -30,7 +31,7 @@ test(It first, It last)
typedef typename S::traits_type T;
typedef typename S::allocator_type A;
S s2(first, last);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == std::distance(first, last));
unsigned i = 0;
for (It it = first; it != last; ++it, ++i)
@@ -47,7 +48,7 @@ test(It first, It last, const A& a)
typedef std::basic_string<charT, std::char_traits<charT>, A> S;
typedef typename S::traits_type T;
S s2(first, last, a);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == std::distance(first, last));
unsigned i = 0;
for (It it = first; it != last; ++it, ++i)
@@ -86,7 +87,7 @@ int main()
test(input_iterator<const char*>(s), input_iterator<const char*>(s+50));
test(input_iterator<const char*>(s), input_iterator<const char*>(s+50), A(2));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
const char* s = "12345678901234567890123456789012345678901234567890";
diff --git a/test/std/strings/basic.string/string.cons/move.pass.cpp b/test/std/strings/basic.string/string.cons/move.pass.cpp
index b94f189ecb46..9ed244406d01 100644
--- a/test/std/strings/basic.string/string.cons/move.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/move.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string(basic_string<charT,traits,Allocator>&& str);
@@ -14,8 +16,7 @@
#include <string>
#include <cassert>
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
+#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -25,18 +26,15 @@ test(S s0)
{
S s1 = s0;
S s2 = std::move(s0);
- assert(s2.__invariants());
- assert(s0.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
+ LIBCPP_ASSERT(s0.__invariants());
assert(s2 == s1);
assert(s2.capacity() >= s2.size());
assert(s2.get_allocator() == s1.get_allocator());
}
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
int main()
{
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
{
typedef test_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
@@ -44,7 +42,6 @@ int main()
test(S("1", A(5)));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A(7)));
}
-#if __cplusplus >= 201103L
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
@@ -52,6 +49,4 @@ int main()
test(S("1", A()));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A()));
}
-#endif
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
diff --git a/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp b/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp
index a232a46bd9fb..d4866921af7a 100644
--- a/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string(basic_string&& str, const Allocator& alloc);
@@ -14,8 +16,6 @@
#include <string>
#include <cassert>
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -27,23 +27,16 @@ test(S s0, const typename S::allocator_type& a)
{
S s1 = s0;
S s2(std::move(s0), a);
- assert(s2.__invariants());
- assert(s0.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
+ LIBCPP_ASSERT(s0.__invariants());
assert(s2 == s1);
assert(s2.capacity() >= s2.size());
assert(s2.get_allocator() == a);
}
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-// #if _LIBCPP_STD_VER <= 14
-// _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
-// #else
-// _NOEXCEPT;
-// #endif
int main()
{
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
{
typedef test_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
@@ -70,8 +63,6 @@ int main()
S s2 (std::move(s1), A(1));
}
assert ( test_alloc_base::alloc_count == alloc_count );
-
-#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
@@ -84,6 +75,4 @@ int main()
test(S("1"), A());
test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), A());
}
-#endif
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
diff --git a/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp b/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp
index d7bd5e06bbe9..136a60fe627b 100644
--- a/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string& operator=(basic_string&& c)
@@ -36,7 +38,7 @@ template <class T>
struct some_alloc2
{
typedef T value_type;
-
+
some_alloc2() {}
some_alloc2(const some_alloc2&);
void deallocate(void*, unsigned) {}
@@ -49,7 +51,7 @@ template <class T>
struct some_alloc3
{
typedef T value_type;
-
+
some_alloc3() {}
some_alloc3(const some_alloc3&);
void deallocate(void*, unsigned) {}
@@ -60,7 +62,6 @@ struct some_alloc3
int main()
{
-#if __has_feature(cxx_noexcept)
{
typedef std::string C;
static_assert(std::is_nothrow_move_assignable<C>::value, "");
@@ -90,6 +91,4 @@ int main()
static_assert(!std::is_nothrow_move_assignable<C>::value, "");
}
#endif
-
-#endif
}
diff --git a/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp b/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp
index 5bc1c8a9153f..006b5b9b4cb0 100644
--- a/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string<charT,traits,Allocator>&
@@ -15,8 +17,7 @@
#include <string>
#include <cassert>
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
+#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -26,17 +27,14 @@ test(S s1, S s2)
{
S s0 = s2;
s1 = std::move(s2);
- assert(s1.__invariants());
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s1.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s1 == s0);
assert(s1.capacity() >= s1.size());
}
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
int main()
{
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
{
typedef std::string S;
test(S(), S());
@@ -55,7 +53,6 @@ int main()
"1234567890123456789012345678901234567890123456789012345678901234567890"),
S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
}
-#if __cplusplus >= 201103L
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), S());
@@ -74,6 +71,4 @@ int main()
"1234567890123456789012345678901234567890123456789012345678901234567890"),
S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"));
}
-#endif
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
diff --git a/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp b/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp
index b287a940cc82..9a7c65ca2cf5 100644
--- a/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string(basic_string&&)
@@ -29,7 +31,6 @@ struct some_alloc
int main()
{
-#if __has_feature(cxx_noexcept)
{
typedef std::string C;
static_assert(std::is_nothrow_move_constructible<C>::value, "");
@@ -46,5 +47,4 @@ int main()
static_assert( std::is_nothrow_move_constructible<C>::value, "");
#endif
}
-#endif
}
diff --git a/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp b/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
index f6e9e00e590f..b678247fb241 100644
--- a/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp
@@ -16,6 +16,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -28,7 +29,7 @@ test(const charT* s)
typedef typename S::allocator_type A;
unsigned n = T::length(s);
S s2(s);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == n);
assert(T::compare(s2.data(), s, n) == 0);
assert(s2.get_allocator() == A());
@@ -43,7 +44,7 @@ test(const charT* s, const A& a)
typedef typename S::traits_type T;
unsigned n = T::length(s);
S s2(s, a);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == n);
assert(T::compare(s2.data(), s, n) == 0);
assert(s2.get_allocator() == a);
@@ -68,7 +69,7 @@ int main()
test("123456798012345679801234567980123456798012345679801234567980");
test("123456798012345679801234567980123456798012345679801234567980", A(2));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
diff --git a/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp b/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp
index c691613379a2..506ab9374002 100644
--- a/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp
@@ -15,6 +15,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -23,7 +24,7 @@ test(S s1, const typename S::value_type* s2)
{
typedef typename S::traits_type T;
s1 = s2;
- assert(s1.__invariants());
+ LIBCPP_ASSERT(s1.__invariants());
assert(s1.size() == T::length(s2));
assert(T::compare(s1.data(), s2, s1.size()) == 0);
assert(s1.capacity() >= s1.size());
@@ -49,7 +50,7 @@ int main()
"1234567890123456789012345678901234567890123456789012345678901234567890"),
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), "");
diff --git a/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp b/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp
index f1f107af20bb..bcab9eb6789e 100644
--- a/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp
@@ -16,6 +16,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -27,7 +28,7 @@ test(const charT* s, unsigned n)
typedef typename S::traits_type T;
typedef typename S::allocator_type A;
S s2(s, n);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == n);
assert(T::compare(s2.data(), s, n) == 0);
assert(s2.get_allocator() == A());
@@ -41,7 +42,7 @@ test(const charT* s, unsigned n, const A& a)
typedef std::basic_string<charT, std::char_traits<charT>, A> S;
typedef typename S::traits_type T;
S s2(s, n, a);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == n);
assert(T::compare(s2.data(), s, n) == 0);
assert(s2.get_allocator() == a);
@@ -66,7 +67,7 @@ int main()
test("123456798012345679801234567980123456798012345679801234567980", 60);
test("123456798012345679801234567980123456798012345679801234567980", 60, A(2));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
diff --git a/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp b/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp
index 4dfe9063a23e..60d41b1d35be 100644
--- a/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp
@@ -16,6 +16,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -27,7 +28,7 @@ test(unsigned n, charT c)
typedef typename S::traits_type T;
typedef typename S::allocator_type A;
S s2(n, c);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == n);
for (unsigned i = 0; i < n; ++i)
assert(s2[i] == c);
@@ -42,7 +43,7 @@ test(unsigned n, charT c, const A& a)
typedef std::basic_string<charT, std::char_traits<charT>, A> S;
typedef typename S::traits_type T;
S s2(n, c, a);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == n);
for (unsigned i = 0; i < n; ++i)
assert(s2[i] == c);
@@ -59,7 +60,7 @@ test(Tp n, Tp c)
typedef typename S::traits_type T;
typedef typename S::allocator_type A;
S s2(n, c);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == n);
for (unsigned i = 0; i < n; ++i)
assert(s2[i] == c);
@@ -75,7 +76,7 @@ test(Tp n, Tp c, const A& a)
typedef std::basic_string<charT, std::char_traits<charT>, A> S;
typedef typename S::traits_type T;
S s2(n, c, a);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s2.size() == n);
for (unsigned i = 0; i < n; ++i)
assert(s2[i] == c);
@@ -104,7 +105,7 @@ int main()
test(100, 65);
test(100, 65, A(3));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
diff --git a/test/std/strings/basic.string/string.cons/substr.pass.cpp b/test/std/strings/basic.string/string.cons/substr.pass.cpp
index 2e42be13a842..a10239bb3414 100644
--- a/test/std/strings/basic.string/string.cons/substr.pass.cpp
+++ b/test/std/strings/basic.string/string.cons/substr.pass.cpp
@@ -11,14 +11,21 @@
// <string>
// basic_string(const basic_string<charT,traits,Allocator>& str,
-// size_type pos, size_type n = npos,
+// size_type pos, size_type n,
+// const Allocator& a = Allocator());
+//
+// basic_string(const basic_string<charT,traits,Allocator>& str,
+// size_type pos,
// const Allocator& a = Allocator());
#include <string>
#include <stdexcept>
#include <algorithm>
+#include <vector>
+#include <scoped_allocator>
#include <cassert>
+#include "test_macros.h"
#include "test_allocator.h"
#include "min_allocator.h"
@@ -31,7 +38,7 @@ test(S str, unsigned pos)
try
{
S s2(str, pos);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(pos <= str.size());
unsigned rlen = str.size() - pos;
assert(s2.size() == rlen);
@@ -54,7 +61,7 @@ test(S str, unsigned pos, unsigned n)
try
{
S s2(str, pos, n);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(pos <= str.size());
unsigned rlen = std::min<unsigned>(str.size() - pos, n);
assert(s2.size() == rlen);
@@ -77,7 +84,7 @@ test(S str, unsigned pos, unsigned n, const typename S::allocator_type& a)
try
{
S s2(str, pos, n, a);
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(pos <= str.size());
unsigned rlen = std::min<unsigned>(str.size() - pos, n);
assert(s2.size() == rlen);
@@ -91,6 +98,20 @@ test(S str, unsigned pos, unsigned n, const typename S::allocator_type& a)
}
}
+#if TEST_STD_VER >= 11
+void test2583()
+{ // LWG #2583
+ typedef std::basic_string<char, std::char_traits<char>, test_allocator<char> > StringA;
+ std::vector<StringA, std::scoped_allocator_adaptor<test_allocator<StringA>>> vs;
+ StringA s{"1234"};
+ vs.emplace_back(s, 2);
+
+ try { vs.emplace_back(s, 5); }
+ catch (const std::out_of_range&) { return; }
+ assert(false);
+}
+#endif
+
int main()
{
{
@@ -131,7 +152,7 @@ int main()
test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A(7)), 50, 10, A(8));
test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A(7)), 50, 100, A(8));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
@@ -170,5 +191,7 @@ int main()
test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A()), 50, 10, A());
test(S("1234567890123456789012345678901234567890123456789012345678901234567890", A()), 50, 100, A());
}
+
+ test2583();
#endif
}
diff --git a/test/std/strings/basic.string/string.iterators/begin.pass.cpp b/test/std/strings/basic.string/string.iterators/begin.pass.cpp
index 55f2eb30f80a..ea811113dfe9 100644
--- a/test/std/strings/basic.string/string.iterators/begin.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/begin.pass.cpp
@@ -38,7 +38,7 @@ int main()
test(S());
test(S("123"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp b/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp
index d0c6ddbb9508..fb4b4bdc3d8e 100644
--- a/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp
@@ -35,7 +35,7 @@ int main()
test(S());
test(S("123"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.iterators/cend.pass.cpp b/test/std/strings/basic.string/string.iterators/cend.pass.cpp
index 6b86d263245b..9ee56be783a2 100644
--- a/test/std/strings/basic.string/string.iterators/cend.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/cend.pass.cpp
@@ -31,7 +31,7 @@ int main()
test(S());
test(S("123"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp b/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp
index 6f29f433f314..90988a39a35e 100644
--- a/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp
@@ -35,7 +35,7 @@ int main()
test(S());
test(S("123"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.iterators/crend.pass.cpp b/test/std/strings/basic.string/string.iterators/crend.pass.cpp
index 1fb422c080ac..bb383787fe49 100644
--- a/test/std/strings/basic.string/string.iterators/crend.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/crend.pass.cpp
@@ -31,7 +31,7 @@ int main()
test(S());
test(S("123"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp b/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp
index 6cac1875ce81..e46368c7717a 100644
--- a/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/db_iterators_2.pass.cpp
@@ -32,7 +32,7 @@ int main()
bool b = s1.begin() < s2.begin();
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s1;
diff --git a/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp b/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp
index d90387e3a46d..3ed15d7c0c04 100644
--- a/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/db_iterators_3.pass.cpp
@@ -32,7 +32,7 @@ int main()
int i = s1.begin() - s2.begin();
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s1;
diff --git a/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp b/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp
index c4a2d0a4baf6..85ea2201f2a0 100644
--- a/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/db_iterators_4.pass.cpp
@@ -33,7 +33,7 @@ int main()
assert(i[1] == 0);
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> C;
C c(1, '\0');
diff --git a/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp b/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp
index ce44cb1ba5b4..9702090e41f8 100644
--- a/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/db_iterators_5.pass.cpp
@@ -35,7 +35,7 @@ int main()
i += 2;
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> C;
C c(1, '\0');
diff --git a/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp b/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp
index 8fab8babc613..e42ba4cf15d7 100644
--- a/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/db_iterators_6.pass.cpp
@@ -34,7 +34,7 @@ int main()
--i;
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> C;
C c(1, '\0');
diff --git a/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp b/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp
index d1cac07e222b..69a682142c14 100644
--- a/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/db_iterators_7.pass.cpp
@@ -34,7 +34,7 @@ int main()
++i;
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> C;
C c(1, '\0');
diff --git a/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp b/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp
index 914c77d48c5c..5472773e6dfe 100644
--- a/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/db_iterators_8.pass.cpp
@@ -32,7 +32,7 @@ int main()
char j = *i;
assert(false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> C;
C c(1, '\0');
diff --git a/test/std/strings/basic.string/string.iterators/end.pass.cpp b/test/std/strings/basic.string/string.iterators/end.pass.cpp
index 02180bbd73de..abd0c2d853dc 100644
--- a/test/std/strings/basic.string/string.iterators/end.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/end.pass.cpp
@@ -40,7 +40,7 @@ int main()
test(S());
test(S("123"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.iterators/iterators.pass.cpp b/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
index 386cededa53f..9466f1135102 100644
--- a/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/iterators.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03, c++11
+
// <string>
// iterator begin();
@@ -21,7 +23,6 @@
int main()
{
-#if _LIBCPP_STD_VER > 11
{ // N3644 testing
typedef std::string C;
C::iterator ii1{}, ii2{};
@@ -40,7 +41,7 @@ int main()
C::iterator ii4 = ii1;
C::const_iterator cii{};
assert ( ii1 == ii2 );
- assert ( ii1 == ii4 );
+ assert ( ii1 == ii4 );
assert ( ii1 == cii );
assert ( !(ii1 != ii2 ));
assert ( !(ii1 != cii ));
@@ -69,5 +70,4 @@ int main()
assert ( !(ii1 != ii2 ));
assert ( !(ii1 != cii ));
}
-#endif
}
diff --git a/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp b/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp
index 0111ad113638..698d613ca6ad 100644
--- a/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp
@@ -38,7 +38,7 @@ int main()
test(S());
test(S("123"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.iterators/rend.pass.cpp b/test/std/strings/basic.string/string.iterators/rend.pass.cpp
index 750173dc342e..c8c2d9ccadca 100644
--- a/test/std/strings/basic.string/string.iterators/rend.pass.cpp
+++ b/test/std/strings/basic.string/string.iterators/rend.pass.cpp
@@ -40,7 +40,7 @@ int main()
test(S());
test(S("123"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S());
diff --git a/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp
index 2abfbf0a172b..d30ca44695a8 100644
--- a/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_append/initializer_list.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string& append(initializer_list<charT> il);
@@ -14,23 +16,20 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
{
-#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
{
std::string s("123");
s.append({'a', 'b', 'c'});
assert(s == "123abc");
}
-#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s("123");
s.append({'a', 'b', 'c'});
assert(s == "123abc");
}
-#endif
-#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
index 82e6fb5895e7..55fc63d06214 100644
--- a/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp
@@ -23,10 +23,11 @@ void
test(S s, It first, It last, S expected)
{
s.append(first, last);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
+#ifndef TEST_HAS_NO_EXCEPTIONS
template <class S, class It>
void
test_exceptions(S s, It first, It last)
@@ -37,9 +38,10 @@ test_exceptions(S s, It first, It last)
assert(false);
}
catch (...) {}
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == aCopy);
}
+#endif
int main()
{
@@ -161,6 +163,7 @@ int main()
S("12345678901234567890""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
}
#endif
+#ifndef TEST_HAS_NO_EXCEPTIONS
{ // test iterator operations that throw
typedef std::string S;
typedef ThrowingIterator<char> TIter;
@@ -174,4 +177,5 @@ int main()
test_exceptions(S(), TIter(s, s+10, 5, TIter::TADereference), TIter());
test_exceptions(S(), TIter(s, s+10, 6, TIter::TAComparison), TIter());
}
+#endif
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
index c0413d607e8f..7c45068a53e1 100644
--- a/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp
@@ -15,6 +15,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ void
test(S s, const typename S::value_type* str, S expected)
{
s.append(str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp
index f3ea3b0a89d7..6c594ebac3be 100644
--- a/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp
@@ -16,6 +16,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -23,7 +24,7 @@ void
test(S s, const typename S::value_type* str, typename S::size_type n, S expected)
{
s.append(str, n);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp
index d6116d3f4823..f2fb8782a21d 100644
--- a/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -21,7 +22,7 @@ void
test(S s, typename S::value_type c, S expected)
{
s.push_back(c);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp
index a049e6112a8a..1610ab5a17d1 100644
--- a/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp
@@ -15,6 +15,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ void
test(S s, typename S::size_type n, typename S::value_type c, S expected)
{
s.append(n, c);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp
index e25627fa6a24..b58ed632893e 100644
--- a/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp
@@ -15,6 +15,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ void
test(S s, S str, S expected)
{
s.append(str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp
index d67b0304b41a..9e8158c3e43e 100644
--- a/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp
@@ -18,6 +18,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -27,7 +28,7 @@ test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected)
try
{
s.append(str, pos, n);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= str.size());
assert(s == expected);
}
@@ -44,7 +45,7 @@ test_npos(S s, S str, typename S::size_type pos, S expected)
try
{
s.append(str, pos);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= str.size());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp
index 003af0eef827..a2114cf5a83b 100644
--- a/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string& assign(initializer_list<charT> il);
@@ -14,23 +16,20 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
int main()
{
-#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
{
std::string s("123");
s.assign({'a', 'b', 'c'});
assert(s == "abc");
}
-#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s("123");
s.assign({'a', 'b', 'c'});
assert(s == "abc");
}
-#endif
-#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
index 690aebd4c2a6..e6a57519f34b 100644
--- a/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp
@@ -15,6 +15,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "test_iterators.h"
#include "min_allocator.h"
@@ -23,10 +24,11 @@ void
test(S s, It first, It last, S expected)
{
s.assign(first, last);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
+#ifndef TEST_HAS_NO_EXCEPTIONS
template <class S, class It>
void
test_exceptions(S s, It first, It last)
@@ -35,11 +37,12 @@ test_exceptions(S s, It first, It last)
try {
s.assign(first, last);
assert(false);
- }
+ }
catch (...) {}
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == aCopy);
}
+#endif
int main()
{
@@ -101,7 +104,7 @@ int main()
test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+52),
S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
@@ -161,6 +164,7 @@ int main()
S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
}
#endif
+#ifndef TEST_HAS_NO_EXCEPTIONS
{ // test iterator operations that throw
typedef std::string S;
typedef ThrowingIterator<char> TIter;
@@ -174,4 +178,5 @@ int main()
test_exceptions(S(), TIter(s, s+10, 5, TIter::TADereference), TIter());
test_exceptions(S(), TIter(s, s+10, 6, TIter::TAComparison), TIter());
}
+#endif
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp
index 07dbcea704dc..386dee6d5808 100644
--- a/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp
@@ -15,6 +15,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ void
test(S s, const typename S::value_type* str, S expected)
{
s.assign(str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp
index a9c71cec882b..0eeb9266f40f 100644
--- a/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp
@@ -16,6 +16,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -23,7 +24,7 @@ void
test(S s, const typename S::value_type* str, typename S::size_type n, S expected)
{
s.assign(str, n);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp
index b3d225a8d04a..6b89df98de72 100644
--- a/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp
@@ -16,6 +16,7 @@
#include <utility>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -23,7 +24,7 @@ void
test(S s, S str, S expected)
{
s.assign(std::move(str));
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp
index 9dd19d877c90..a899e0dbe7b5 100644
--- a/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp
@@ -15,6 +15,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ void
test(S s, typename S::size_type n, typename S::value_type c, S expected)
{
s.assign(n, c);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp
index 2bc5dd223e62..788512ba3d3e 100644
--- a/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp
@@ -15,17 +15,29 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
+#include "test_allocator.h"
template <class S>
void
test(S s, S str, S expected)
{
s.assign(str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
+template <class S>
+void
+testAlloc(S s, S str, const typename S::allocator_type& a)
+{
+ s.assign(str);
+ LIBCPP_ASSERT(s.__invariants());
+ assert(s == str);
+ assert(s.get_allocator() == a);
+}
+
int main()
{
{
@@ -50,7 +62,22 @@ int main()
test(S("12345678901234567890"), S("1234567890"), S("1234567890"));
test(S("12345678901234567890"), S("12345678901234567890"),
S("12345678901234567890"));
+
+ testAlloc(S(), S(), std::allocator<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
+ 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;
@@ -74,9 +101,14 @@ int main()
test(S("12345678901234567890"), S("1234567890"), S("1234567890"));
test(S("12345678901234567890"), S("12345678901234567890"),
S("12345678901234567890"));
+
+ testAlloc(S(), S(), min_allocator<char>());
+ testAlloc(S(), S("12345"), min_allocator<char>());
+ testAlloc(S(), S("1234567890"), min_allocator<char>());
+ testAlloc(S(), S("12345678901234567890"), min_allocator<char>());
}
#endif
-#if __cplusplus > 201402L
+#if TEST_STD_VER > 14
{
typedef std::string S;
static_assert(noexcept(S().assign(S())), ""); // LWG#2063
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp
index 275d249d304c..d9d3cb422ae5 100644
--- a/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp
@@ -18,6 +18,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -27,7 +28,7 @@ test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected)
try
{
s.assign(str, pos, n);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= str.size());
assert(s == expected);
}
@@ -44,7 +45,7 @@ test_npos(S s, S str, typename S::size_type pos, S expected)
try
{
s.assign(str, pos);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= str.size());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp
index 69f001cf4f00..b66877652837 100644
--- a/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp
@@ -17,6 +17,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -104,7 +105,7 @@ int main()
test(S("abcdefghijklmnopqrst"), s, 20, 1);
test(S("abcdefghijklmnopqrst"), s, 21, 0);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
char s[50];
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db1.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db1.pass.cpp
deleted file mode 100644
index 6c2929d7f1d3..000000000000
--- a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db1.pass.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <string>
-
-// Call erase(const_iterator position) with end()
-
-#if _LIBCPP_DEBUG >= 1
-
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-
-#include <string>
-#include <cassert>
-#include <cstdlib>
-#include <exception>
-
-#include "min_allocator.h"
-
-int main()
-{
- {
- std::string l1("123");
- std::string::const_iterator i = l1.end();
- l1.erase(i);
- assert(false);
- }
-#if __cplusplus >= 201103L
- {
- typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
- S l1("123");
- S::const_iterator i = l1.end();
- l1.erase(i);
- assert(false);
- }
-#endif
-}
-
-#else
-
-int main()
-{
-}
-
-#endif
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db2.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db2.pass.cpp
deleted file mode 100644
index d20fcd4623b7..000000000000
--- a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_db2.pass.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <string>
-
-// Call erase(const_iterator position) with iterator from another container
-
-#if _LIBCPP_DEBUG >= 1
-
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-
-#include <string>
-#include <cassert>
-#include <cstdlib>
-#include <exception>
-
-#include "min_allocator.h"
-
-int main()
-{
- {
- std::string l1("123");
- std::string l2("123");
- std::string::const_iterator i = l2.begin();
- l1.erase(i);
- assert(false);
- }
-#if __cplusplus >= 201103L
- {
- typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
- S l1("123");
- S l2("123");
- S::const_iterator i = l2.begin();
- l1.erase(i);
- assert(false);
- }
-#endif
-}
-
-#else
-
-int main()
-{
-}
-
-#endif
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db1.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db1.pass.cpp
deleted file mode 100644
index 5015241ad63e..000000000000
--- a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db1.pass.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <string>
-
-// Call erase(const_iterator first, const_iterator last); with first iterator from another container
-
-#if _LIBCPP_DEBUG >= 1
-
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-
-#include <string>
-#include <cassert>
-#include <exception>
-#include <cstdlib>
-
-#include "min_allocator.h"
-
-int main()
-{
- {
- std::string l1("123");
- std::string l2("123");
- std::string::iterator i = l1.erase(l2.cbegin(), l1.cbegin()+1);
- assert(false);
- }
-#if __cplusplus >= 201103L
- {
- typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
- S l1("123");
- S l2("123");
- S::iterator i = l1.erase(l2.cbegin(), l1.cbegin()+1);
- assert(false);
- }
-#endif
-}
-
-#else
-
-int main()
-{
-}
-
-#endif
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db2.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db2.pass.cpp
deleted file mode 100644
index 6a23bf88ca5c..000000000000
--- a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db2.pass.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <string>
-
-// Call erase(const_iterator first, const_iterator last); with second iterator from another container
-
-#if _LIBCPP_DEBUG >= 1
-
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-
-#include <string>
-#include <cassert>
-#include <exception>
-#include <cstdlib>
-
-#include "min_allocator.h"
-
-int main()
-{
- {
- std::string l1("123");
- std::string l2("123");
- std::string::iterator i = l1.erase(l1.cbegin(), l2.cbegin()+1);
- assert(false);
- }
-#if __cplusplus >= 201103L
- {
- typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
- S l1("123");
- S l2("123");
- S::iterator i = l1.erase(l1.cbegin(), l2.cbegin()+1);
- assert(false);
- }
-#endif
-}
-
-#else
-
-int main()
-{
-}
-
-#endif
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db3.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db3.pass.cpp
deleted file mode 100644
index a8443818aea5..000000000000
--- a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db3.pass.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <string>
-
-// Call erase(const_iterator first, const_iterator last); with both iterators from another container
-
-#if _LIBCPP_DEBUG >= 1
-
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-
-#include <string>
-#include <cassert>
-#include <exception>
-#include <cstdlib>
-
-#include "min_allocator.h"
-
-int main()
-{
- {
- std::string l1("123");
- std::string l2("123");
- std::string::iterator i = l1.erase(l2.cbegin(), l2.cbegin()+1);
- assert(false);
- }
-#if __cplusplus >= 201103L
- {
- typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
- S l1("123");
- S l2("123");
- S::iterator i = l1.erase(l2.cbegin(), l2.cbegin()+1);
- assert(false);
- }
-#endif
-}
-
-#else
-
-int main()
-{
-}
-
-#endif
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db4.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db4.pass.cpp
deleted file mode 100644
index 0549e816b44c..000000000000
--- a/test/std/strings/basic.string/string.modifiers/string_erase/erase_iter_iter_db4.pass.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <string>
-
-// Call erase(const_iterator first, const_iterator last); with a bad range
-
-#if _LIBCPP_DEBUG >= 1
-
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-
-#include <string>
-#include <cassert>
-#include <exception>
-#include <cstdlib>
-
-#include "min_allocator.h"
-
-int main()
-{
- {
- std::string l1("123");
- std::string::iterator i = l1.erase(l1.cbegin()+1, l1.cbegin());
- assert(false);
- }
-#if __cplusplus >= 201103L
- {
- typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
- S l1("123");
- S::iterator i = l1.erase(l1.cbegin()+1, l1.cbegin());
- assert(false);
- }
-#endif
-}
-
-#else
-
-int main()
-{
-}
-
-#endif
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp
index c44db71ae3b0..8de5fc7bab85 100644
--- a/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ test(S s, typename S::difference_type pos, S expected)
{
typename S::const_iterator p = s.begin() + pos;
typename S::iterator i = s.erase(p);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
assert(i - s.begin() == pos);
}
@@ -44,7 +45,7 @@ int main()
test(S("abcdefghijklmnopqrst"), 10, S("abcdefghijlmnopqrst"));
test(S("abcdefghijklmnopqrst"), 19, S("abcdefghijklmnopqrs"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S("abcde"), 0, S("bcde"));
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp
index dbe6d7ba0e73..e4fe2cdfd022 100644
--- a/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -23,7 +24,7 @@ test(S s, typename S::difference_type pos, typename S::difference_type n, S expe
typename S::const_iterator first = s.cbegin() + pos;
typename S::const_iterator last = s.cbegin() + pos + n;
typename S::iterator i = s.erase(first, last);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
assert(i - s.begin() == pos);
}
@@ -87,7 +88,7 @@ int main()
test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrs"));
test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 0, 0, S(""));
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp
index 790ce40b0a00..64f8e506b13e 100644
--- a/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp
@@ -11,13 +11,10 @@
// void pop_back();
-#if _LIBCPP_DEBUG >= 1
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-#endif
-
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -25,7 +22,7 @@ void
test(S s, S expected)
{
s.pop_back();
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
@@ -37,7 +34,7 @@ int main()
test(S("abcdefghij"), S("abcdefghi"));
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrs"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S("abcde"), S("abcd"));
@@ -45,11 +42,4 @@ int main()
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrs"));
}
#endif
-#if _LIBCPP_DEBUG >= 1
- {
- std::string s;
- s.pop_back();
- assert(false);
- }
-#endif
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp
index 11015cb973ed..5db97ec2cf5f 100644
--- a/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp
@@ -17,6 +17,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -28,7 +29,7 @@ test(S s, typename S::size_type pos, typename S::size_type n, S expected)
try
{
s.erase(pos, n);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
}
@@ -48,7 +49,7 @@ test(S s, typename S::size_type pos, S expected)
try
{
s.erase(pos);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
}
@@ -64,7 +65,7 @@ void
test(S s, S expected)
{
s.erase();
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
@@ -173,7 +174,7 @@ int main()
test(S("abcdefghij"), S(""));
test(S("abcdefghijklmnopqrst"), S(""));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 0, 0, S(""));
diff --git a/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp
index 6b0a3aa006ee..6bd9b7e01c37 100644
--- a/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp
@@ -11,14 +11,11 @@
// iterator insert(const_iterator p, charT c);
-#if _LIBCPP_DEBUG >= 1
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-#endif
-
#include <string>
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -28,7 +25,7 @@ test(S& s, typename S::const_iterator p, typename S::value_type c, S expected)
bool sufficient_cap = s.size() < s.capacity();
typename S::difference_type pos = p - s.begin();
typename S::iterator i = s.insert(p, c);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
assert(i - s.begin() == pos);
assert(*i == c);
@@ -76,13 +73,4 @@ int main()
test(s, s.begin()+6, 'C', S("a567ABC1432dcb"));
}
#endif
-#if _LIBCPP_DEBUG >= 1
- {
- typedef std::string S;
- S s;
- S s2;
- s.insert(s2.begin(), '1');
- assert(false);
- }
-#endif
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
index 4c29ab4ed093..bbae39419da4 100644
--- a/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp
@@ -28,11 +28,12 @@ test(S s, typename S::difference_type pos, It first, It last, S expected)
{
typename S::const_iterator p = s.cbegin() + pos;
typename S::iterator i = s.insert(p, first, last);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(i - s.begin() == pos);
assert(s == expected);
}
+#ifndef TEST_HAS_NO_EXCEPTIONS
template <class S, class It>
void
test_exceptions(S s, typename S::difference_type pos, It first, It last)
@@ -44,9 +45,10 @@ test_exceptions(S s, typename S::difference_type pos, It first, It last)
assert(false);
}
catch (...) {}
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == aCopy);
}
+#endif
int main()
{
@@ -142,6 +144,7 @@ int main()
S("12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
}
#endif
+#ifndef TEST_HAS_NO_EXCEPTIONS
{ // test iterator operations that throw
typedef std::string S;
typedef ThrowingIterator<char> TIter;
@@ -155,6 +158,7 @@ int main()
test_exceptions(S(), 0, TIter(s, s+10, 5, TIter::TADereference), TIter());
test_exceptions(S(), 0, TIter(s, s+10, 6, TIter::TAComparison), TIter());
}
+#endif
#if _LIBCPP_DEBUG >= 1
{
std::string v;
diff --git a/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp
index e6d1db6fc0df..c9cd0c2c9248 100644
--- a/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp
@@ -11,13 +11,10 @@
// iterator insert(const_iterator p, size_type n, charT c);
-#if _LIBCPP_DEBUG >= 1
-#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
-#endif
-
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -27,7 +24,7 @@ test(S s, typename S::difference_type pos, typename S::size_type n,
{
typename S::const_iterator p = s.cbegin() + pos;
typename S::iterator i = s.insert(p, n, c);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(i - s.begin() == pos);
assert(s == expected);
}
@@ -170,12 +167,4 @@ int main()
test(S("abcdefghijklmnopqrst"), 20, 20, '1', S("abcdefghijklmnopqrst11111111111111111111"));
}
#endif
-#if _LIBCPP_DEBUG >= 1
- {
- std::string s;
- std::string s2;
- s.insert(s2.begin(), 1, 'a');
- assert(false);
- }
-#endif
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp
index 247b3308f96e..faab5bd92672 100644
--- a/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp
@@ -17,6 +17,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -28,7 +29,7 @@ test(S s, typename S::size_type pos, const typename S::value_type* str, S expect
try
{
s.insert(pos, str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp
index 41b81231075e..30d3df9f259f 100644
--- a/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp
@@ -17,6 +17,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -29,7 +30,7 @@ test(S s, typename S::size_type pos, const typename S::value_type* str,
try
{
s.insert(pos, str, n);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp
index 945ec48012ba..04ea1d376940 100644
--- a/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp
@@ -17,6 +17,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -29,7 +30,7 @@ test(S s, typename S::size_type pos, typename S::size_type n,
try
{
s.insert(pos, n, str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp
index 04b47ec78988..1945871b99ac 100644
--- a/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp
@@ -17,6 +17,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -28,7 +29,7 @@ test(S s, typename S::size_type pos, S str, S expected)
try
{
s.insert(pos, str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp
index c3745c3749db..32485db478d8 100644
--- a/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp
@@ -19,6 +19,7 @@
#include <stdexcept>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -31,7 +32,7 @@ test(S s, typename S::size_type pos1, S str, typename S::size_type pos2,
try
{
s.insert(pos1, str, pos2, n);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos1 <= old_size && pos2 <= str.size());
assert(s == expected);
}
@@ -51,7 +52,7 @@ test_npos(S s, typename S::size_type pos1, S str, typename S::size_type pos2, S
try
{
s.insert(pos1, str, pos2);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos1 <= old_size && pos2 <= str.size());
assert(s == expected);
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp
index 7384ae7f1d3c..f39ed036e149 100644
--- a/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -21,7 +22,7 @@ void
test(S s, typename S::value_type str, S expected)
{
s += str;
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
@@ -34,7 +35,7 @@ int main()
test(S("1234567890"), 'a', S("1234567890a"));
test(S("12345678901234567890"), 'a', S("12345678901234567890a"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), 'a', S("a"));
diff --git a/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp
index c291028998df..5b32af951624 100644
--- a/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// basic_string& operator+=(initializer_list<charT> il);
@@ -18,19 +20,15 @@
int main()
{
-#ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
{
std::string s("123");
s += {'a', 'b', 'c'};
assert(s == "123abc");
}
-#if __cplusplus >= 201103L
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s("123");
s += {'a', 'b', 'c'};
assert(s == "123abc");
}
-#endif
-#endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp
index 77b20d1bc080..c19fd2909011 100644
--- a/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp
@@ -14,6 +14,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -21,7 +22,7 @@ void
test(S s, const typename S::value_type* str, S expected)
{
s += str;
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
@@ -50,7 +51,7 @@ int main()
test(S("12345678901234567890"), "12345678901234567890",
S("1234567890123456789012345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), "", S());
diff --git a/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp
index 33649792521c..1064855c1506 100644
--- a/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp
@@ -15,6 +15,7 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -22,7 +23,7 @@ void
test(S s, S str, S expected)
{
s += str;
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
}
@@ -51,7 +52,7 @@ int main()
test(S("12345678901234567890"), S("12345678901234567890"),
S("1234567890123456789012345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(), S(), S());
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
index 057964112aa1..cc37e79c7932 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp
@@ -29,12 +29,13 @@ test(S s, typename S::size_type pos1, typename S::size_type n1, It f, It l, S ex
typename S::const_iterator last = s.begin() + pos1 + n1;
typename S::size_type xlen = last - first;
s.replace(first, last, f, l);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
typename S::size_type rlen = std::distance(f, l);
assert(s.size() == old_size - xlen + rlen);
}
+#ifndef TEST_HAS_NO_EXCEPTIONS
template <class S, class It>
void
test_exceptions(S s, typename S::size_type pos1, typename S::size_type n1, It f, It l)
@@ -47,9 +48,10 @@ test_exceptions(S s, typename S::size_type pos1, typename S::size_type n1, It f,
assert(false);
}
catch (...) {}
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == aCopy);
}
+#endif
const char* str = "12345678901234567890";
@@ -990,6 +992,7 @@ int main()
test8<S>();
}
#endif
+#ifndef TEST_HAS_NO_EXCEPTIONS
{ // test iterator operations that throw
typedef std::string S;
typedef ThrowingIterator<char> TIter;
@@ -1003,4 +1006,5 @@ int main()
test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, TIter(s, s+10, 5, TIter::TADereference), TIter());
test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, TIter(s, s+10, 6, TIter::TAComparison), TIter());
}
+#endif
}
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp
index c7551b928ec1..730fc1a501cf 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp
@@ -29,7 +29,7 @@ test(S s, typename S::size_type pos1, typename S::size_type n1, const typename S
typename S::const_iterator last = s.begin() + pos1 + n1;
typename S::size_type xlen = last - first;
s.replace(first, last, str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
typename S::size_type rlen = S::traits_type::length(str);
assert(s.size() == old_size - xlen + rlen);
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp
index 087df7824ac2..4a910e499819 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp
@@ -12,12 +12,11 @@
// basic_string<charT,traits,Allocator>&
// replace(const_iterator i1, const_iterator i2, const charT* s, size_type n);
-#include <stdio.h>
-
#include <string>
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -30,7 +29,7 @@ test(S s, typename S::size_type pos1, typename S::size_type n1, const typename S
typename S::const_iterator last = s.begin() + pos1 + n1;
typename S::size_type xlen = last - first;
s.replace(first, last, str, n2);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
typename S::size_type rlen = n2;
assert(s.size() == old_size - xlen + rlen);
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp
index 8be8b5298237..4dbc8ab1f22c 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp
@@ -12,12 +12,11 @@
// basic_string<charT,traits,Allocator>&
// replace(const_iterator i1, const_iterator i2, size_type n, charT c);
-#include <stdio.h>
-
#include <string>
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -30,7 +29,7 @@ test(S s, typename S::size_type pos1, typename S::size_type n1, typename S::size
typename S::const_iterator last = s.begin() + pos1 + n1;
typename S::size_type xlen = last - first;
s.replace(first, last, n2, c);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
typename S::size_type rlen = n2;
assert(s.size() == old_size - xlen + rlen);
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp
index b85a1063ebe1..190e10d5c830 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp
@@ -12,12 +12,11 @@
// basic_string<charT,traits,Allocator>&
// replace(const_iterator i1, const_iterator i2, const basic_string& str);
-#include <stdio.h>
-
#include <string>
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -29,7 +28,7 @@ test(S s, typename S::size_type pos1, typename S::size_type n1, S str, S expecte
typename S::const_iterator last = s.begin() + pos1 + n1;
typename S::size_type xlen = last - first;
s.replace(first, last, str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(s == expected);
typename S::size_type rlen = str.size();
assert(s.size() == old_size - xlen + rlen);
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp
index eb0e982ef16e..3beb074c0fd3 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp
@@ -13,13 +13,12 @@
// basic_string<charT,traits,Allocator>&
// replace(size_type pos, size_type n1, const charT* s);
-#include <stdio.h>
-
#include <string>
#include <stdexcept>
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -32,7 +31,7 @@ test(S s, typename S::size_type pos, typename S::size_type n1,
try
{
s.replace(pos, n1, str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
typename S::size_type xlen = std::min(n1, old_size - pos);
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp
index 898ab2a144c1..d961e9e8f76f 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp
@@ -13,13 +13,12 @@
// basic_string<charT,traits,Allocator>&
// replace(size_type pos, size_type n1, const charT* s, size_type n2);
-#include <stdio.h>
-
#include <string>
#include <stdexcept>
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -33,7 +32,7 @@ test(S s, typename S::size_type pos, typename S::size_type n1,
try
{
s.replace(pos, n1, str, n2);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
typename S::size_type xlen = std::min(n1, old_size - pos);
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp
index e616ecc04261..d4696fba8a83 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp
@@ -18,6 +18,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -31,7 +32,7 @@ test(S s, typename S::size_type pos, typename S::size_type n1,
try
{
s.replace(pos, n1, n2, c);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos <= old_size);
assert(s == expected);
typename S::size_type xlen = std::min(n1, old_size - pos);
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp
index ea311dd1564f..1be45d8a6624 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp
@@ -18,6 +18,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -29,7 +30,7 @@ test(S s, typename S::size_type pos1, typename S::size_type n1, S str, S expecte
try
{
s.replace(pos1, n1, str);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos1 <= old_size);
assert(s == expected);
typename S::size_type xlen = std::min(n1, old_size - pos1);
diff --git a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp
index 01f4a1f6ccef..3f4bf450d858 100644
--- a/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp
@@ -20,6 +20,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -33,7 +34,7 @@ test(S s, typename S::size_type pos1, typename S::size_type n1,
try
{
s.replace(pos1, n1, str, pos2, n2);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos1 <= old_size && pos2 <= str.size());
assert(s == expected);
typename S::size_type xlen = std::min(n1, old_size - pos1);
@@ -58,7 +59,7 @@ test_npos(S s, typename S::size_type pos1, typename S::size_type n1,
try
{
s.replace(pos1, n1, str, pos2);
- assert(s.__invariants());
+ LIBCPP_ASSERT(s.__invariants());
assert(pos1 <= old_size && pos2 <= str.size());
assert(s == expected);
typename S::size_type xlen = std::min(n1, old_size - pos1);
diff --git a/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp
index 4973bda4ddf0..fe2ee1fa6da9 100644
--- a/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp
+++ b/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp
@@ -16,6 +16,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -25,8 +26,8 @@ test(S s1, S s2)
S s1_ = s1;
S s2_ = s2;
s1.swap(s2);
- assert(s1.__invariants());
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s1.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s1 == s2_);
assert(s2 == s1_);
}
@@ -52,7 +53,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("1234567890"));
test(S("abcdefghijklmnopqrst"), S("12345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""));
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
index 4a912eaec6fa..6011ea1586fc 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp
@@ -48,7 +48,7 @@ int main()
assert(in.eof());
assert(s == L" ghij");
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
std::istringstream in(" abc\n def\n ghij");
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
index 6596f2fffa79..79852337a033 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp
@@ -54,7 +54,7 @@ int main()
assert(in.eof());
assert(s == L" ghij");
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
std::istringstream in(" abc* def** ghij");
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
index 84f52bb2e50f..48d1854808c0 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp
@@ -33,7 +33,7 @@ int main()
getline(std::wistringstream(L" abc* def* ghij"), s, L'*');
assert(s == L" abc");
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s("initial text");
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
index a3c9911abe9b..18c22f915ca0 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp
@@ -33,7 +33,7 @@ int main()
getline(std::wistringstream(L" abc\n def\n ghij"), s);
assert(s == L" abc");
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
S s("initial text");
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
index af806bc04570..30e7dc6c12e0 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp
@@ -66,7 +66,7 @@ int main()
in >> s;
assert(in.fail());
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
std::istringstream in("a bc defghij");
diff --git a/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
index 102e8ea08159..6489ddfca466 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp
@@ -52,7 +52,7 @@ int main()
assert(out.good());
assert(L" " + s == out.str());
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
std::basic_ostringstream<S::value_type, S::traits_type, S::allocator_type> out;
diff --git a/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp
index cee538800dd0..a2e25196d26f 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp
@@ -18,6 +18,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -27,8 +28,8 @@ test(S s1, S s2)
S s1_ = s1;
S s2_ = s2;
swap(s1, s2);
- assert(s1.__invariants());
- assert(s2.__invariants());
+ LIBCPP_ASSERT(s1.__invariants());
+ LIBCPP_ASSERT(s2.__invariants());
assert(s1 == s2_);
assert(s2 == s1_);
}
@@ -54,7 +55,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("1234567890"));
test(S("abcdefghijklmnopqrst"), S("12345678901234567890"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""));
diff --git a/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp
index cfe03655a8a1..4ac13d10e670 100644
--- a/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+// UNSUPPORTED: c++98, c++03
+
// <string>
// void swap(basic_string& c)
@@ -22,13 +24,14 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "test_allocator.h"
template <class T>
struct some_alloc
{
typedef T value_type;
-
+
some_alloc() {}
some_alloc(const some_alloc&);
void deallocate(void*, unsigned) {}
@@ -40,7 +43,7 @@ template <class T>
struct some_alloc2
{
typedef T value_type;
-
+
some_alloc2() {}
some_alloc2(const some_alloc2&);
void deallocate(void*, unsigned) {}
@@ -51,7 +54,6 @@ struct some_alloc2
int main()
{
-#if __has_feature(cxx_noexcept)
{
typedef std::string C;
C c1, c2;
@@ -80,6 +82,4 @@ int main()
static_assert( noexcept(swap(c1, c2)), "");
}
#endif
-
-#endif
}
diff --git a/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp
index cc08982a5ca3..6d39d025c585 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp
@@ -45,7 +45,7 @@ int main()
test("abcdefghijklmnopqrst", S("abcdefghij"), true);
test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test("", S(""), false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp
index b496d70dc2f0..67d18b7a9ca7 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp
@@ -45,7 +45,7 @@ int main()
test(S("abcdefghijklmnopqrst"), "abcdefghij", true);
test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), "", false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp
index 069b305111d4..27e97788c637 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp
@@ -46,7 +46,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("abcdefghij"), true);
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""), false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp
index 23a89c6fc8fb..9a8213e230fb 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp
@@ -49,7 +49,7 @@ int main()
test0('a', S("12345"), S("a12345"));
test0('a', S("1234567890"), S("a1234567890"));
test0('a', S("12345678901234567890"), S("a12345678901234567890"));
-
+
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
test1('a', S(""), S("a"));
@@ -59,14 +59,14 @@ int main()
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0('a', S(""), S("a"));
test0('a', S("12345"), S("a12345"));
test0('a', S("1234567890"), S("a1234567890"));
test0('a', S("12345678901234567890"), S("a12345678901234567890"));
-
+
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
test1('a', S(""), S("a"));
diff --git a/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp
index 665e86f2c239..88fa678ec44f 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp
@@ -83,7 +83,7 @@ int main()
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0("", S(""), S(""));
diff --git a/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp
index 12903fe8118e..b4c2c97043cc 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp
@@ -59,7 +59,7 @@ int main()
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0(S(""), '1', S("1"));
diff --git a/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp
index 63a7b769b787..3b669e7d9869 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp
@@ -83,7 +83,7 @@ int main()
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0(S(""), "", S(""));
diff --git a/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp
index 318b648d6eb0..1977b6f517ba 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp
@@ -143,7 +143,7 @@ int main()
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0(S(""), S(""), S(""));
diff --git a/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp
index 19a5bdd977e4..19dd8bfbd92e 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp
@@ -45,7 +45,7 @@ int main()
test("abcdefghijklmnopqrst", S("abcdefghij"), false);
test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test("", S(""), true);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp
index 22006bb1be68..f6e3ddec46e2 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp
@@ -45,7 +45,7 @@ int main()
test(S("abcdefghijklmnopqrst"), "abcdefghij", false);
test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), "", true);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp
index 0bff70a977a6..c1d57b0bcc8b 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp
@@ -46,7 +46,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("abcdefghij"), false);
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""), true);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp
index f9fa204b9eea..363e6d36100b 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp
@@ -45,7 +45,7 @@ int main()
test("abcdefghijklmnopqrst", S("abcdefghij"), true);
test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test("", S(""), false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp
index daa6f40ae3c0..4b5f7c3689a2 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp
@@ -45,7 +45,7 @@ int main()
test(S("abcdefghijklmnopqrst"), "abcdefghij", true);
test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), "", false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp
index 95073bf7644c..01c7c5311b95 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp
@@ -46,7 +46,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("abcdefghij"), true);
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""), false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp
index eab117a843fa..f4ab04d60d8a 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp
@@ -45,7 +45,7 @@ int main()
test("abcdefghijklmnopqrst", S("abcdefghij"), true);
test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test("", S(""), true);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp
index 56b3b35b3d94..4042997f462f 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp
@@ -45,7 +45,7 @@ int main()
test(S("abcdefghijklmnopqrst"), "abcdefghij", true);
test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), "", true);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp
index c02b202c49e6..cdcfc9d8d14a 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp
@@ -46,7 +46,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("abcdefghij"), true);
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""), true);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp
index 86f6a2db119a..e709aa4fbc42 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp
@@ -45,7 +45,7 @@ int main()
test("abcdefghijklmnopqrst", S("abcdefghij"), false);
test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test("", S(""), false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp
index b935da5426fd..8e4f2fab13a4 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp
@@ -45,7 +45,7 @@ int main()
test(S("abcdefghijklmnopqrst"), "abcdefghij", false);
test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), "", false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp
index 487e2056f2ca..c14e92a0003c 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp
@@ -46,7 +46,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("abcdefghij"), false);
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), false);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""), false);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp
index 21959405194d..acab3592ec17 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp
@@ -45,7 +45,7 @@ int main()
test("abcdefghijklmnopqrst", S("abcdefghij"), false);
test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test("", S(""), true);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp
index bb1bce8d4043..f0f540a499c7 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp
@@ -45,7 +45,7 @@ int main()
test(S("abcdefghijklmnopqrst"), "abcdefghij", false);
test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), "", true);
diff --git a/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp b/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp
index 2b975f160d5d..208f9623929d 100644
--- a/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp
+++ b/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp
@@ -46,7 +46,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("abcdefghij"), false);
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), true);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""), true);
diff --git a/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp b/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp
index 3bdb800bf736..d6695b0b34bc 100644
--- a/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp
@@ -40,7 +40,7 @@ int main()
test(S("abcdefghij"));
test(S("abcdefghijklmnopqrst"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""));
diff --git a/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp b/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp
index 917248fa6916..9b66cb004990 100644
--- a/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp
@@ -10,15 +10,17 @@
// <string>
// const charT* data() const;
+// charT* data(); // C++17
#include <string>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
void
-test(const S& s)
+test_const(const S& s)
{
typedef typename S::traits_type T;
const typename S::value_type* str = s.data();
@@ -31,22 +33,46 @@ test(const S& s)
assert(T::eq(str[0], typename S::value_type()));
}
+template <class S>
+void
+test_nonconst(S& s)
+{
+ typedef typename S::traits_type T;
+ typename S::value_type* str = s.data();
+ if (s.size() > 0)
+ {
+ assert(T::compare(str, &s[0], s.size()) == 0);
+ assert(T::eq(str[s.size()], typename S::value_type()));
+ }
+ else
+ assert(T::eq(str[0], typename S::value_type()));
+}
+
int main()
{
{
typedef std::string S;
- test(S(""));
- test(S("abcde"));
- test(S("abcdefghij"));
- test(S("abcdefghijklmnopqrst"));
+ test_const(S(""));
+ test_const(S("abcde"));
+ test_const(S("abcdefghij"));
+ test_const(S("abcdefghijklmnopqrst"));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
- test(S(""));
- test(S("abcde"));
- test(S("abcdefghij"));
- test(S("abcdefghijklmnopqrst"));
+ test_const(S(""));
+ test_const(S("abcde"));
+ test_const(S("abcdefghij"));
+ test_const(S("abcdefghijklmnopqrst"));
+ }
+#endif
+#if TEST_STD_VER > 14
+ {
+ typedef std::string S;
+ S s1(""); test_nonconst(s1);
+ S s2("abcde"); test_nonconst(s2);
+ S s3("abcdefghij"); test_nonconst(s3);
+ S s4("abcdefghijklmnopqrst"); test_nonconst(s4);
}
#endif
}
diff --git a/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp b/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp
index 6ba040d2635d..e50c61fb162a 100644
--- a/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp
@@ -34,7 +34,7 @@ int main()
test(S("abcdefghij", A(2)), A(2));
test(S("abcdefghijklmnopqrst", A(3)), A(3));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
diff --git a/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp
index dda7428992a1..150973a7f4e4 100644
--- a/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp
@@ -53,7 +53,7 @@ int main()
test(S("abcdefghijklmnopqrst"), "abcdefghij", 10);
test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", 0);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), "", 0);
diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp
index 2fef19a24df9..094c227030b8 100644
--- a/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp
@@ -362,7 +362,7 @@ int main()
test1<S>();
test2<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp
index cc61a2e453c4..22aae785c19a 100644
--- a/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp
@@ -1304,7 +1304,7 @@ int main()
test10<S>();
test11<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp
index 66417482fb58..90b4230f64da 100644
--- a/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp
@@ -362,7 +362,7 @@ int main()
test1<S>();
test2<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp
index f5c067699233..3cbbea7b490b 100644
--- a/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp
@@ -5885,7 +5885,7 @@ int main()
test54<S>();
test55<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp b/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp
index 7de95a8cda56..3f6c169d223a 100644
--- a/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp
@@ -53,7 +53,7 @@ int main()
test(S("abcdefghijklmnopqrst"), S("abcdefghij"), 10);
test(S("abcdefghijklmnopqrst"), S("abcdefghijklmnopqrst"), 0);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), S(""), 0);
diff --git a/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp
index 590173eddf41..945f8805487d 100644
--- a/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp
@@ -67,7 +67,7 @@ int main()
test(S("gfsmthlkon"), 'q', 0);
test(S("laenfsbridchgotmkqpj"), 'q', 0);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 'q', 0, S::npos);
diff --git a/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp
index 53d3a95292c2..0c239b323508 100644
--- a/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp
@@ -148,7 +148,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp
index 14ac4b2a153b..0296e2cbee38 100644
--- a/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp
@@ -375,7 +375,7 @@ int main()
test2<S>();
test3<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp
index 4fb072fa4744..b7df3461792b 100644
--- a/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp
@@ -147,7 +147,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp
index 32d0e86f3d84..494a1181f2ae 100644
--- a/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp
@@ -65,7 +65,7 @@ int main()
test(S("gfsmthlkon"), 'e', S::npos);
test(S("laenfsbridchgotmkqpj"), 'e', 2);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 'e', 0, S::npos);
diff --git a/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp
index 6dd176df0165..b2a05b29f134 100644
--- a/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp
@@ -148,7 +148,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp
index 9e98a6ad20f7..8b7f7b4a5884 100644
--- a/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp
@@ -375,7 +375,7 @@ int main()
test2<S>();
test3<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp
index e409edc25f48..765d1603af8c 100644
--- a/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp
@@ -147,7 +147,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp
index b130f9287ba3..3212389bb3a8 100644
--- a/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp
@@ -65,7 +65,7 @@ int main()
test(S("gfsmthlkon"), 'i', 9);
test(S("laenfsbridchgotmkqpj"), 'i', 19);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 'i', 0, S::npos);
diff --git a/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp
index 3e6bd9d093ea..7dc75184ff99 100644
--- a/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp
@@ -148,7 +148,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp
index 4db7762b2755..2024266df4a6 100644
--- a/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp
@@ -375,7 +375,7 @@ int main()
test2<S>();
test3<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp
index ba93adbe445e..f3377596ab3d 100644
--- a/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp
@@ -147,7 +147,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp
index 12765b71f28f..e0bbd82f6679 100644
--- a/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp
@@ -65,7 +65,7 @@ int main()
test(S("gfsmthlkon"), 'm', 3);
test(S("laenfsbridchgotmkqpj"), 'm', 15);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 'm', 0, S::npos);
diff --git a/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp
index f1b447c43f4b..c3d6044c4201 100644
--- a/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp
@@ -148,7 +148,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp
index 7f96e6351aa6..42a076aa4c56 100644
--- a/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp
@@ -375,7 +375,7 @@ int main()
test2<S>();
test3<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp
index 351c6727de2d..5cb2df7c6c7f 100644
--- a/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp
@@ -147,7 +147,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp
index 24e58fc5f1ad..a084348b3e63 100644
--- a/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp
@@ -65,7 +65,7 @@ int main()
test(S("abcdeabcde"), 'c', 2);
test(S("abcdeabcdeabcdeabcde"), 'c', 2);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 'c', 0, S::npos);
diff --git a/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp
index e00d7fd8a3dc..0257e125953f 100644
--- a/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp
@@ -154,7 +154,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp
index 3006c466eed3..9a380f72982d 100644
--- a/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp
@@ -375,7 +375,7 @@ int main()
test2<S>();
test3<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp
index a89df4e3ffa1..e519a7943ba9 100644
--- a/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp
@@ -147,7 +147,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp
index cbc0c9b35367..c53d77f348b8 100644
--- a/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp
@@ -65,7 +65,7 @@ int main()
test(S("abcdeabcde"), 'b', 6);
test(S("abcdeabcdeabcdeabcde"), 'b', 16);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 'b', 0, S::npos);
diff --git a/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp
index 450aebedd59c..ebcb0ea3859a 100644
--- a/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp
@@ -155,7 +155,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp
index 47baf40b265b..e8d0c6b73871 100644
--- a/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp
@@ -375,7 +375,7 @@ int main()
test2<S>();
test3<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp b/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp
index 05e6e5174232..ef571c284b81 100644
--- a/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp
@@ -147,7 +147,7 @@ int main()
test0<S>();
test1<S>();
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test0<S>();
diff --git a/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp b/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp
index dc01f4f47747..145e8dde58bf 100644
--- a/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp
+++ b/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp
@@ -17,6 +17,7 @@
#include <algorithm>
#include <cassert>
+#include "test_macros.h"
#include "min_allocator.h"
template <class S>
@@ -26,7 +27,7 @@ test(const S& s, typename S::size_type pos, typename S::size_type n)
try
{
S str = s.substr(pos, n);
- assert(str.__invariants());
+ LIBCPP_ASSERT(str.__invariants());
assert(pos <= s.size());
typename S::size_type rlen = std::min(n, s.size() - pos);
assert(str.size() == rlen);
@@ -101,7 +102,7 @@ int main()
test(S("lsaijeqhtrbgcdmpfkno"), 20, 0);
test(S("dplqartnfgejichmoskb"), 21, 0);
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
test(S(""), 0, 0);
diff --git a/test/std/strings/basic.string/string.require/contiguous.pass.cpp b/test/std/strings/basic.string/string.require/contiguous.pass.cpp
index ca31ace0ef0b..49773fe491a2 100644
--- a/test/std/strings/basic.string/string.require/contiguous.pass.cpp
+++ b/test/std/strings/basic.string/string.require/contiguous.pass.cpp
@@ -41,7 +41,7 @@ int main()
test_contiguous(S("1", A(5)));
test_contiguous(S("1234567890123456789012345678901234567890123456789012345678901234567890", A(7)));
}
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
{
typedef min_allocator<char> A;
typedef std::basic_string<char, std::char_traits<char>, A> S;
diff --git a/test/std/strings/basic.string/types.pass.cpp b/test/std/strings/basic.string/types.pass.cpp
index dcb3bbc35ebf..a6832a158eca 100644
--- a/test/std/strings/basic.string/types.pass.cpp
+++ b/test/std/strings/basic.string/types.pass.cpp
@@ -79,7 +79,7 @@ int main()
std::char_traits<char> >::value), "");
static_assert((std::is_same<std::basic_string<char>::allocator_type,
std::allocator<char> >::value), "");
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
test<std::char_traits<char>, min_allocator<char> >();
#endif
}
diff --git a/test/std/strings/c.strings/cstring.pass.cpp b/test/std/strings/c.strings/cstring.pass.cpp
index 20f4050cfbdb..63f86d350610 100644
--- a/test/std/strings/c.strings/cstring.pass.cpp
+++ b/test/std/strings/c.strings/cstring.pass.cpp
@@ -34,17 +34,12 @@ int main()
static_assert((std::is_same<decltype(std::strncmp(cpc, cpc, s)), int>::value), "");
static_assert((std::is_same<decltype(std::strcoll(cpc, cpc)), int>::value), "");
static_assert((std::is_same<decltype(std::strxfrm(cp, cpc, s)), std::size_t>::value), "");
-// static_assert((std::is_same<decltype(std::memchr(vpc, 0, s)), const void*>::value), "");
static_assert((std::is_same<decltype(std::memchr(vp, 0, s)), void*>::value), "");
-// static_assert((std::is_same<decltype(std::strchr(cpc, 0)), const char*>::value), "");
static_assert((std::is_same<decltype(std::strchr(cp, 0)), char*>::value), "");
static_assert((std::is_same<decltype(std::strcspn(cpc, cpc)), std::size_t>::value), "");
-// static_assert((std::is_same<decltype(std::strpbrk(cpc, cpc)), const char*>::value), "");
static_assert((std::is_same<decltype(std::strpbrk(cp, cpc)), char*>::value), "");
-// static_assert((std::is_same<decltype(std::strrchr(cpc, 0)), const char*>::value), "");
static_assert((std::is_same<decltype(std::strrchr(cp, 0)), char*>::value), "");
static_assert((std::is_same<decltype(std::strspn(cpc, cpc)), std::size_t>::value), "");
-// static_assert((std::is_same<decltype(std::strstr(cpc, cpc)), const char*>::value), "");
static_assert((std::is_same<decltype(std::strstr(cp, cpc)), char*>::value), "");
#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
static_assert((std::is_same<decltype(std::strtok(cp, cpc)), char*>::value), "");
@@ -52,4 +47,15 @@ int main()
static_assert((std::is_same<decltype(std::memset(vp, 0, s)), void*>::value), "");
static_assert((std::is_same<decltype(std::strerror(0)), char*>::value), "");
static_assert((std::is_same<decltype(std::strlen(cpc)), std::size_t>::value), "");
+
+ // These tests fail on systems whose C library doesn't provide a correct overload
+ // set for strchr, strpbrk, strrchr, strstr, and memchr, unless the compiler is
+ // a suitably recent version of Clang.
+#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD)
+ static_assert((std::is_same<decltype(std::memchr(vpc, 0, s)), const void*>::value), "");
+ static_assert((std::is_same<decltype(std::strchr(cpc, 0)), const char*>::value), "");
+ static_assert((std::is_same<decltype(std::strpbrk(cpc, cpc)), const char*>::value), "");
+ static_assert((std::is_same<decltype(std::strrchr(cpc, 0)), const char*>::value), "");
+ static_assert((std::is_same<decltype(std::strstr(cpc, cpc)), const char*>::value), "");
+#endif
}
diff --git a/test/std/strings/c.strings/cwchar.pass.cpp b/test/std/strings/c.strings/cwchar.pass.cpp
index 93d2bb1efa50..2b7c3c465f6d 100644
--- a/test/std/strings/c.strings/cwchar.pass.cpp
+++ b/test/std/strings/c.strings/cwchar.pass.cpp
@@ -10,6 +10,7 @@
// <cwchar>
#include <cwchar>
+#include <cstdarg>
#include <type_traits>
#ifndef NULL
@@ -35,13 +36,20 @@ int main()
std::tm *tm = 0;
std::wint_t w = 0;
::FILE* fp = 0;
-#ifdef __APPLE__
- __darwin_va_list va;
-#else
- __builtin_va_list va;
-#endif
+ std::va_list va;
+
char* ns = 0;
wchar_t* ws = 0;
+
+ ((void)mb); // Prevent unused warning
+ ((void)s); // Prevent unused warning
+ ((void)tm); // Prevent unused warning
+ ((void)w); // Prevent unused warning
+ ((void)fp); // Prevent unused warning
+ ((void)va); // Prevent unused warning
+ ((void)ns); // Prevent unused warning
+ ((void)ws); // Prevent unused warning
+
static_assert((std::is_same<decltype(std::fwprintf(fp, L"")), int>::value), "");
static_assert((std::is_same<decltype(std::fwscanf(fp, L"")), int>::value), "");
static_assert((std::is_same<decltype(std::swprintf(ws, s, L"")), int>::value), "");
@@ -73,19 +81,14 @@ int main()
static_assert((std::is_same<decltype(std::wcscoll(L"", L"")), int>::value), "");
static_assert((std::is_same<decltype(std::wcsncmp(L"", L"", s)), int>::value), "");
static_assert((std::is_same<decltype(std::wcsxfrm(ws, L"", s)), std::size_t>::value), "");
- static_assert((std::is_same<decltype(std::wcschr((const wchar_t*)0, L' ')), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wcschr((wchar_t*)0, L' ')), wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wcscspn(L"", L"")), std::size_t>::value), "");
static_assert((std::is_same<decltype(std::wcslen(L"")), std::size_t>::value), "");
- static_assert((std::is_same<decltype(std::wcspbrk((const wchar_t*)0, L"")), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wcspbrk((wchar_t*)0, L"")), wchar_t*>::value), "");
- static_assert((std::is_same<decltype(std::wcsrchr((const wchar_t*)0, L' ')), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wcsrchr((wchar_t*)0, L' ')), wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wcsspn(L"", L"")), std::size_t>::value), "");
- static_assert((std::is_same<decltype(std::wcsstr((const wchar_t*)0, L"")), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wcsstr((wchar_t*)0, L"")), wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wcstok(ws, L"", (wchar_t**)0)), wchar_t*>::value), "");
- static_assert((std::is_same<decltype(std::wmemchr((const wchar_t*)0, L' ', s)), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wmemchr((wchar_t*)0, L' ', s)), wchar_t*>::value), "");
static_assert((std::is_same<decltype(std::wmemcmp(L"", L"", s)), int>::value), "");
static_assert((std::is_same<decltype(std::wmemcpy(ws, L"", s)), wchar_t*>::value), "");
@@ -101,6 +104,17 @@ int main()
static_assert((std::is_same<decltype(std::mbsrtowcs(ws, (const char**)0, s, &mb)), std::size_t>::value), "");
static_assert((std::is_same<decltype(std::wcsrtombs(ns, (const wchar_t**)0, s, &mb)), std::size_t>::value), "");
+ // These tests fail on systems whose C library doesn't provide a correct overload
+ // set for wcschr, wcspbrk, wcsrchr, wcsstr, and wmemchr, unless the compiler is
+ // a suitably recent version of Clang.
+#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD)
+ static_assert((std::is_same<decltype(std::wcschr((const wchar_t*)0, L' ')), const wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(std::wcspbrk((const wchar_t*)0, L"")), const wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(std::wcsrchr((const wchar_t*)0, L' ')), const wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(std::wcsstr((const wchar_t*)0, L"")), const wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(std::wmemchr((const wchar_t*)0, L' ', s)), const wchar_t*>::value), "");
+#endif
+
#ifndef _LIBCPP_HAS_NO_STDIN
static_assert((std::is_same<decltype(std::getwchar()), std::wint_t>::value), "");
static_assert((std::is_same<decltype(std::vwscanf(L"", va)), int>::value), "");
diff --git a/test/std/strings/c.strings/version_cctype.pass.cpp b/test/std/strings/c.strings/version_cctype.pass.cpp
deleted file mode 100644
index e0919d9d27b0..000000000000
--- a/test/std/strings/c.strings/version_cctype.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <cctype>
-
-#include <cctype>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/strings/c.strings/version_cstring.pass.cpp b/test/std/strings/c.strings/version_cstring.pass.cpp
deleted file mode 100644
index 87e705aec4cc..000000000000
--- a/test/std/strings/c.strings/version_cstring.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <cstring>
-
-#include <cstring>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/strings/c.strings/version_cuchar.pass.cpp b/test/std/strings/c.strings/version_cuchar.pass.cpp
deleted file mode 100644
index dcfdcc37ac7e..000000000000
--- a/test/std/strings/c.strings/version_cuchar.pass.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// XFAIL: *
-
-// <cuchar>
-
-#include <cuchar>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/strings/c.strings/version_cwchar.pass.cpp b/test/std/strings/c.strings/version_cwchar.pass.cpp
deleted file mode 100644
index 72e9855c54e5..000000000000
--- a/test/std/strings/c.strings/version_cwchar.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <cwchar>
-
-#include <cwchar>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/strings/c.strings/version_cwctype.pass.cpp b/test/std/strings/c.strings/version_cwctype.pass.cpp
deleted file mode 100644
index 461482abe765..000000000000
--- a/test/std/strings/c.strings/version_cwctype.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <cwctype>
-
-#include <cwctype>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp
index 3ff9c0f1ff92..9b552347fe9e 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp
@@ -1,6 +1,6 @@
//===----------------------------------------------------------------------===//
//
-// The LLVM Compiler Infrastructure
+// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
@@ -18,11 +18,16 @@
int main()
{
- char c = '\0';
- assert(!std::char_traits<char>::lt('a', 'a'));
- assert( std::char_traits<char>::lt('A', 'a'));
- assert(!std::char_traits<char>::lt('A' + 127, 'a'));
- assert(!std::char_traits<char>::lt('A' - 127, 'a'));
- assert( std::char_traits<char>::lt('A', 'a' + 127));
- assert( std::char_traits<char>::lt('A', 'a' - 127));
+ assert( std::char_traits<char>::lt('\0', 'A'));
+ assert(!std::char_traits<char>::lt('A', '\0'));
+
+ assert(!std::char_traits<char>::lt('a', 'a'));
+ assert( std::char_traits<char>::lt('A', 'a'));
+ assert(!std::char_traits<char>::lt('a', 'A'));
+
+ assert( std::char_traits<char>::lt('a', 'z'));
+ assert( std::char_traits<char>::lt('A', 'Z'));
+
+ assert( std::char_traits<char>::lt(' ', 'A'));
+ assert( std::char_traits<char>::lt('A', '~'));
}
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
index af87052ff219..7f223af57414 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
char16_t c = u'\0';
std::char_traits<char16_t>::assign(c, u'a');
assert(c == u'a');
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
index b5039072dbfd..7356097a6677 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char16_t>::compare(u"", u"", 0) == 0);
assert(std::char_traits<char16_t>::compare(NULL, NULL, 0) == 0);
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
index 8216934658ce..1ae4cb8fe8d9 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
char16_t c = u'\0';
assert(std::char_traits<char16_t>::eq(u'a', u'a'));
assert(!std::char_traits<char16_t>::eq(u'a', u'A'));
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
index a20aa7d47189..42546f450fc7 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert( std::char_traits<char16_t>::eq_int_type(u'a', u'a'));
assert(!std::char_traits<char16_t>::eq_int_type(u'a', u'A'));
assert(!std::char_traits<char16_t>::eq_int_type(std::char_traits<char16_t>::eof(), u'A'));
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
index 9f6acca83e36..ff5a2a934a9f 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char16_t>::length(u"") == 0);
assert(std::char_traits<char16_t>::length(u"a") == 1);
assert(std::char_traits<char16_t>::length(u"aa") == 2);
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
index 135ecc05e199..b27ee06f4a59 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
char16_t c = u'\0';
assert(!std::char_traits<char16_t>::lt(u'a', u'a'));
assert( std::char_traits<char16_t>::lt(u'A', u'a'));
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
index 3c213e6e0a37..af9378073bec 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char16_t>::not_eof(u'a') == u'a');
assert(std::char_traits<char16_t>::not_eof(u'A') == u'A');
#endif
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
index ab47403dbe01..2a679d0cf420 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char16_t>::to_char_type(u'a') == u'a');
assert(std::char_traits<char16_t>::to_char_type(u'A') == u'A');
#endif
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
index 11eb8f525466..93861461baaf 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char16_t>::to_int_type(u'a') == u'a');
assert(std::char_traits<char16_t>::to_int_type(u'A') == u'A');
#endif
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
index 35dcd9602d3c..6cd55ea58bff 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
char32_t c = U'\0';
std::char_traits<char32_t>::assign(c, U'a');
assert(c == U'a');
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
index 25f2099896a6..2671b5624100 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char32_t>::compare(U"", U"", 0) == 0);
assert(std::char_traits<char32_t>::compare(NULL, NULL, 0) == 0);
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
index ffeff0cf45a4..0284d9f7933b 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
char32_t c = U'\0';
assert(std::char_traits<char32_t>::eq(U'a', U'a'));
assert(!std::char_traits<char32_t>::eq(U'a', U'A'));
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
index eb5c69661014..d39798c74bb6 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert( std::char_traits<char32_t>::eq_int_type(U'a', U'a'));
assert(!std::char_traits<char32_t>::eq_int_type(U'a', U'A'));
assert(!std::char_traits<char32_t>::eq_int_type(std::char_traits<char32_t>::eof(), U'A'));
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
index d80ce051d1fa..e0bee5dc5080 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char32_t>::length(U"") == 0);
assert(std::char_traits<char32_t>::length(U"a") == 1);
assert(std::char_traits<char32_t>::length(U"aa") == 2);
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
index f667507f0457..9816df738709 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
char32_t c = U'\0';
assert(!std::char_traits<char32_t>::lt(U'a', U'a'));
assert( std::char_traits<char32_t>::lt(U'A', U'a'));
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
index d794417bfd7a..b83fd0fe07ff 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char32_t>::not_eof(U'a') == U'a');
assert(std::char_traits<char32_t>::not_eof(U'A') == U'A');
#endif
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
index 1f67242b2aec..c9820424fb66 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char32_t>::to_char_type(U'a') == U'a');
assert(std::char_traits<char32_t>::to_char_type(U'A') == U'A');
#endif
diff --git a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
index a378186bdd6f..801c4cf7cddf 100644
--- a/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
+++ b/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
@@ -16,10 +16,12 @@
#include <string>
#include <cassert>
+#include "test_macros.h"
+
int main()
{
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#if __cplusplus >= 201103L
+#if TEST_STD_VER >= 11
assert(std::char_traits<char32_t>::to_int_type(U'a') == U'a');
assert(std::char_traits<char32_t>::to_int_type(U'A') == U'A');
#endif
diff --git a/test/std/strings/version.pass.cpp b/test/std/strings/version.pass.cpp
deleted file mode 100644
index 0c79c1af2ce8..000000000000
--- a/test/std/strings/version.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is dual licensed under the MIT and the University of Illinois Open
-// Source Licenses. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// <string>
-
-#include <string>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}