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<>