2019-06-22 Marek Polacek <polacek@redhat.com>
+ PR c++/65707
+ PR c++/89480
+ PR c++/58836
+ * g++.dg/cpp0x/nondeduced5.C: New test.
+ * g++.dg/cpp0x/nondeduced6.C: New test.
+ * g++.dg/cpp0x/nondeduced7.C: New test.
+
PR c++/66256
* g++.dg/cpp0x/noexcept54.C: New test.
--- /dev/null
+// PR c++/65707
+// { dg-do compile { target c++11 } }
+
+template <int a> struct b {
+ typedef int c;
+ constexpr operator c() { return a; }
+};
+template <bool> struct d;
+template <typename> struct e : b<true> {};
+template <typename, typename = d<true>> struct f;
+template <typename g> struct f<g, d<e<g>{}>> {};
+template struct f<int>;
--- /dev/null
+// PR c++/89480
+// { dg-do compile { target c++11 } }
+
+template <typename Foo, Foo Part>
+struct TSelect {};
+
+enum What {
+ The
+};
+
+template <typename Foo>
+struct AnotherOneSelector {
+ static constexpr Foo Id = Foo::The;
+};
+
+template <typename Foo, typename SelectPartType>
+struct THelper;
+
+template <typename Foo>
+struct THelper<Foo, TSelect<Foo, Foo{AnotherOneSelector<Foo>::Id}>> {};
+
+int main() {
+ THelper<What, TSelect<What, What::The>> t;
+}
--- /dev/null
+// PR c++/58836
+// { dg-do compile { target c++11 } }
+
+template<typename, int> struct A;
+template<typename T> struct A<T, T{}> {}; // { dg-error "partial specialization" }
+A<int, 0> a;