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:
@@ -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"));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user