* include/std/variant (__accepted_index): Use void_t.
authorJonathan Wakely <jwakely@redhat.com>
Fri, 6 Jul 2018 10:20:38 +0000 (11:20 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 6 Jul 2018 10:20:38 +0000 (11:20 +0100)
From-SVN: r262471

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/variant

index f78d3043858d5313edd1c7d2d47117222cc14e23..30fe76958f009978bca5ad456cdf43c2c86dafdc 100644 (file)
@@ -1,3 +1,7 @@
+2018-07-06  Jonathan Wakely  <jwakely@redhat.com>
+
+       * include/std/variant (__accepted_index): Use void_t.
+
 2018-07-05  Jonathan Wakely  <jwakely@redhat.com>
 
        PR libstdc++/85831
index 63eafdd58e5ac909858187a82acfb21432a489ed..66d878142a4a27e7ee1ad08d509d0d4d27460388 100644 (file)
@@ -710,7 +710,8 @@ namespace __variant
     };
 
   // Helper for variant(_Tp&&) and variant::operator=(_Tp&&).
-  // __accepted_index maps the arbitrary _Tp to an alternative type in _Variant.
+  // __accepted_index maps an arbitrary _Tp to an alternative type in _Variant
+  // (or to variant_npos).
   template<typename _Tp, typename _Variant, typename = void>
     struct __accepted_index
     { static constexpr size_t value = variant_npos; };
@@ -718,8 +719,7 @@ namespace __variant
   template<typename _Tp, typename... _Types>
     struct __accepted_index<
       _Tp, variant<_Types...>,
-      decltype(__overload_set<_Types...>::_S_fun(std::declval<_Tp>()),
-              std::declval<void>())>
+      void_t<decltype(__overload_set<_Types...>::_S_fun(std::declval<_Tp>()))>>
     {
       static constexpr size_t value = sizeof...(_Types) - 1
        - decltype(__overload_set<_Types...>::