This patch corrects ambiguous partial specializations of typelist::detail::append_. Previously, neither append_<chain<Hd, Tl>, Typelist_Chain> nor append_<Typelist_Chain, null_type> was a better match for append_<chain<Hd, Tl>, null_type>.

libstdc++-v3/ChangeLog:

2018-11-04  Tom Honermann  <t...@honermann.net>

     * include/ext/typelist.h: Constrained a partial specialization of
       typelist::detail::append_ to only match chain<T1,T2>.

Tom.
diff --git a/libstdc++-v3/include/ext/typelist.h b/libstdc++-v3/include/ext/typelist.h
index b21f01ffb43..2cdbc3efafa 100644
--- a/libstdc++-v3/include/ext/typelist.h
+++ b/libstdc++-v3/include/ext/typelist.h
@@ -215,10 +215,10 @@ namespace detail
       typedef Typelist_Chain 			      		type;
     };
 
-  template<typename Typelist_Chain>
-    struct append_<Typelist_Chain, null_type>
+  template<typename Hd, typename Tl>
+    struct append_<chain<Hd, Tl>, null_type>
     {
-      typedef Typelist_Chain 					type;
+      typedef chain<Hd, Tl>  					type;
     };
 
   template<>

Reply via email to