Commit 3663671a by Jonathan Wakely Committed by Jonathan Wakely

Use existing helper for new std::string constructor

	* include/bits/basic_string.h: Reuse _If_sv alias template for new
	constructor.

From-SVN: r242453
parent 6ae2ae3b
2016-11-15 Jonathan Wakely <jwakely@redhat.com> 2016-11-15 Jonathan Wakely <jwakely@redhat.com>
* include/bits/basic_string.h: Reuse _If_sv alias template for new
constructor.
* doc/xml/manual/intro.xml: Document LWG 2770 status. Remove entries * doc/xml/manual/intro.xml: Document LWG 2770 status. Remove entries
for 2742 and 2748. for 2742 and 2748.
* doc/html/*: Regenerate. * doc/html/*: Regenerate.
......
...@@ -585,6 +585,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 ...@@ -585,6 +585,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
{ _M_construct(__beg, __end); } { _M_construct(__beg, __end); }
#if __cplusplus > 201402L #if __cplusplus > 201402L
template<typename _Tp, typename _Res>
using _If_sv = enable_if_t<
__and_<is_convertible<const _Tp&, __sv_type>,
__not_<is_convertible<const _Tp&, const _CharT*>>>::value,
_Res>;
/** /**
* @brief Construct string from a substring of a string_view. * @brief Construct string from a substring of a string_view.
* @param __t Source string view. * @param __t Source string view.
...@@ -592,9 +598,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 ...@@ -592,9 +598,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
* @param __n The number of characters to copy from __t. * @param __n The number of characters to copy from __t.
* @param __a Allocator to use. * @param __a Allocator to use.
*/ */
template<typename _Tp, typename = template<typename _Tp, typename = _If_sv<_Tp, void>>
_Require<is_convertible<_Tp, __sv_type>,
__not_<is_convertible<const _Tp&, const _CharT*>>>>
basic_string(const _Tp& __t, size_type __pos, size_type __n, basic_string(const _Tp& __t, size_type __pos, size_type __n,
const _Alloc& __a = _Alloc()) const _Alloc& __a = _Alloc())
: basic_string(__sv_type(__t).substr(__pos, __n), __a) { } : basic_string(__sv_type(__t).substr(__pos, __n), __a) { }
...@@ -1252,12 +1256,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 ...@@ -1252,12 +1256,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
append(__sv_type __sv) append(__sv_type __sv)
{ return this->append(__sv.data(), __sv.size()); } { return this->append(__sv.data(), __sv.size()); }
template<typename _Tp, typename _Res>
using _If_sv = enable_if_t<
__and_<is_convertible<const _Tp&, __sv_type>,
__not_<is_convertible<const _Tp&, const _CharT*>>>::value,
_Res>;
/** /**
* @brief Append a range of characters from a string_view. * @brief Append a range of characters from a string_view.
* @param __sv The string_view to be appended from. * @param __sv The string_view to be appended from.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment