mirror of git://gcc.gnu.org/git/gcc.git
LWG 3075 basic_string needs deduction guides from basic_string_view
* testsuite/21_strings/basic_string/cons/char/deduction.cc: Test deduction from string views. * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: Likewise. From-SVN: r261612
This commit is contained in:
parent
db5ab3aa92
commit
53e926c8cd
|
|
@ -1,5 +1,11 @@
|
||||||
2018-06-14 Jonathan Wakely <jwakely@redhat.com>
|
2018-06-14 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
LWG 3075 basic_string needs deduction guides from basic_string_view
|
||||||
|
* testsuite/21_strings/basic_string/cons/char/deduction.cc: Test
|
||||||
|
deduction from string views.
|
||||||
|
* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
|
||||||
|
Likewise.
|
||||||
|
|
||||||
LWG 3074 make scalar types non-deduced in valarray non-member functions
|
LWG 3074 make scalar types non-deduced in valarray non-member functions
|
||||||
* include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
|
* include/bits/valarray_after.h (_DEFINE_EXPR_BINARY_FUNCTION): Change
|
||||||
scalar parameters to be a non-deduced context.
|
scalar parameters to be a non-deduced context.
|
||||||
|
|
|
||||||
|
|
@ -5873,6 +5873,23 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
|
||||||
typename = _RequireAllocator<_Allocator>>
|
typename = _RequireAllocator<_Allocator>>
|
||||||
basic_string(_InputIterator, _InputIterator, _Allocator = _Allocator())
|
basic_string(_InputIterator, _InputIterator, _Allocator = _Allocator())
|
||||||
-> basic_string<_CharT, char_traits<_CharT>, _Allocator>;
|
-> basic_string<_CharT, char_traits<_CharT>, _Allocator>;
|
||||||
|
|
||||||
|
// _GLIBCXX_RESOLVE_LIB_DEFECTS
|
||||||
|
// 3075. basic_string needs deduction guides from basic_string_view
|
||||||
|
template<typename _CharT, typename _Traits,
|
||||||
|
typename _Allocator = allocator<_CharT>,
|
||||||
|
typename = _RequireAllocator<_Allocator>>
|
||||||
|
basic_string(basic_string_view<_CharT, _Traits>, const _Allocator& = _Allocator())
|
||||||
|
-> basic_string<_CharT, _Traits, _Allocator>;
|
||||||
|
|
||||||
|
template<typename _CharT, typename _Traits,
|
||||||
|
typename _Allocator = allocator<_CharT>,
|
||||||
|
typename = _RequireAllocator<_Allocator>>
|
||||||
|
basic_string(basic_string_view<_CharT, _Traits>,
|
||||||
|
typename basic_string<_CharT, _Traits, _Allocator>::size_type,
|
||||||
|
typename basic_string<_CharT, _Traits, _Allocator>::size_type,
|
||||||
|
const _Allocator& = _Allocator())
|
||||||
|
-> basic_string<_CharT, _Traits, _Allocator>;
|
||||||
_GLIBCXX_END_NAMESPACE_CXX11
|
_GLIBCXX_END_NAMESPACE_CXX11
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,3 +118,23 @@ test04()
|
||||||
std::basic_string s4((char32_t)1, U'a', std::allocator<char32_t>());
|
std::basic_string s4((char32_t)1, U'a', std::allocator<char32_t>());
|
||||||
check_type<std::u32string>(s4);
|
check_type<std::u32string>(s4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test05()
|
||||||
|
{
|
||||||
|
// LWG 3075 basic_string needs deduction guides from basic_string_view
|
||||||
|
std::string_view sv{"A View to a Kill"};
|
||||||
|
const std::allocator<char> a;
|
||||||
|
|
||||||
|
std::basic_string s1(sv);
|
||||||
|
check_type<std::string>(s1);
|
||||||
|
|
||||||
|
std::basic_string s2(sv, a);
|
||||||
|
check_type<std::string>(s2);
|
||||||
|
|
||||||
|
std::basic_string s3(sv, 2u, 6u);
|
||||||
|
check_type<std::string>(s3);
|
||||||
|
|
||||||
|
std::basic_string s4(sv, 2u, 6u, a);
|
||||||
|
check_type<std::string>(s4);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,3 +77,23 @@ test02()
|
||||||
std::basic_string s4((wchar_t)1, L'a', std::allocator<wchar_t>());
|
std::basic_string s4((wchar_t)1, L'a', std::allocator<wchar_t>());
|
||||||
check_type<std::wstring>(s4);
|
check_type<std::wstring>(s4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test05()
|
||||||
|
{
|
||||||
|
// LWG 3075 basic_string needs deduction guides from basic_string_view
|
||||||
|
std::wstring_view sv{L"A View to a Kill"};
|
||||||
|
const std::allocator<wchar_t> a;
|
||||||
|
|
||||||
|
std::basic_string s1(sv);
|
||||||
|
check_type<std::wstring>(s1);
|
||||||
|
|
||||||
|
std::basic_string s2(sv, a);
|
||||||
|
check_type<std::wstring>(s2);
|
||||||
|
|
||||||
|
std::basic_string s3(sv, 2u, 6u);
|
||||||
|
check_type<std::wstring>(s3);
|
||||||
|
|
||||||
|
std::basic_string s4(sv, 2u, 6u, a);
|
||||||
|
check_type<std::wstring>(s4);
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue