+2019-11-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/92150 - partial specialization with class NTTP.
+ * pt.c (unify): Handle VIEW_CONVERT_EXPR.
+
2019-11-20 Jakub Jelinek <jakub@redhat.com>
PR c++/90767
/* I don't think this will do the right thing with respect to types.
But the only case I've seen it in so far has been array bounds, where
signedness is the only information lost, and I think that will be
- okay. */
- while (CONVERT_EXPR_P (parm))
+ okay. VIEW_CONVERT_EXPR can appear with class NTTP, thanks to
+ finish_id_expression_1, and are also OK. */
+ while (CONVERT_EXPR_P (parm) || TREE_CODE (parm) == VIEW_CONVERT_EXPR)
parm = TREE_OPERAND (parm, 0);
if (arg == error_mark_node)
--- /dev/null
+// PR c++/92150
+// { dg-do compile { target c++2a } }
+
+struct X {
+ int value;
+ // auto operator==(const X&) = default;
+};
+
+template<typename T, X N>
+struct b;
+
+template<typename T>
+inline constexpr bool is_b = false;
+
+template<typename T, X N>
+inline constexpr bool is_b<b<T, N>> = true;
+
+using my_b = b<int, X{1}>;
+static_assert(is_b<my_b>);