On 05/11/18 14:40 -0500, Tom Honermann wrote:
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.

Committed to trunk, thanks.


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