Implement LWG #2268: Setting a default argument in the declaration of a member function assign of std::basic_string.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@202876 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Marshall Clow
2014-03-04 19:17:19 +00:00
parent be8a99ad0f
commit a93b5e27a8
6 changed files with 189 additions and 15 deletions

View File

@@ -10,7 +10,8 @@
// <string>
// basic_string<charT,traits,Allocator>&
// assign(const basic_string<charT,traits>& str, size_type pos, size_type n);
// assign(const basic_string<charT,traits>& str, size_type pos, size_type n=npos);
// the =npos was added for C++14
#include <string>
#include <stdexcept>
@@ -35,6 +36,23 @@ test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected)
}
}
template <class S>
void
test_npos(S s, S str, typename S::size_type pos, S expected)
{
try
{
s.assign(str, pos);
assert(s.__invariants());
assert(pos <= str.size());
assert(s == expected);
}
catch (std::out_of_range&)
{
assert(pos > str.size());
}
}
int main()
{
{
@@ -87,4 +105,14 @@ int main()
S("6789012345"));
}
#endif
{
typedef std::string S;
test_npos(S(), S(), 0, S());
test_npos(S(), S(), 1, S());
test_npos(S(), S("12345"), 0, S("12345"));
test_npos(S(), S("12345"), 1, S("2345"));
test_npos(S(), S("12345"), 3, S("45"));
test_npos(S(), S("12345"), 5, S(""));
test_npos(S(), S("12345"), 6, S("not happening"));
}
}