Use existing helper for new std::string constructor
authorJonathan Wakely <jwakely@redhat.com>
Tue, 15 Nov 2016 19:32:52 +0000 (19:32 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 15 Nov 2016 19:32:52 +0000 (19:32 +0000)
* include/bits/basic_string.h: Reuse _If_sv alias template for new
constructor.

From-SVN: r242453

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/basic_string.h

index 6bf1ecbcf0e2ffd4fb6eede81e024420e8550785..4bba6a4e105e00e5271911a05e3ca2534c3718c8 100644 (file)
@@ -1,5 +1,8 @@
 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
        for 2742 and 2748.
        * doc/html/*: Regenerate.
index 943e88d87228a699c4e4798e3817763790e5c1af..9af7bfb66f9e4ce2efbcda82bf08e09541356d4f 100644 (file)
@@ -585,6 +585,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
        { _M_construct(__beg, __end); }
 
 #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.
        *  @param  __t   Source string view.
@@ -592,9 +598,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
        *  @param  __n   The number of characters to copy from __t.
        *  @param  __a   Allocator to use.
        */
-      template<typename _Tp, typename =
-              _Require<is_convertible<_Tp, __sv_type>,
-                       __not_<is_convertible<const _Tp&, const _CharT*>>>>
+      template<typename _Tp, typename = _If_sv<_Tp, void>>
        basic_string(const _Tp& __t, size_type __pos, size_type __n,
                     const _Alloc& __a = _Alloc())
        : basic_string(__sv_type(__t).substr(__pos, __n), __a) { }
@@ -1252,12 +1256,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       append(__sv_type __sv)
       { 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.
        *  @param __sv  The string_view to be appended from.