+2017-08-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/82030 - ICE inheriting from multiple lambdas
+ PR c++/80767
+ * call.c (compare_ics): Handle null candidate.
+
2017-08-30 Ville Voutilainen <ville.voutilainen@gmail.com>
Make taking the address of an overloaded function a non-deduced context
return 0;
else if (t1->kind == ck_user)
{
- if (t1->cand->fn != t2->cand->fn)
+ tree f1 = t1->cand ? t1->cand->fn : t1->type;
+ tree f2 = t2->cand ? t2->cand->fn : t2->type;
+ if (f1 != f2)
return 0;
}
else
--- /dev/null
+// PR c++/80767
+// { dg-do compile { target c++11 } }
+
+template <typename T, typename U = T> struct A { using type = U; };
+template <typename F, typename... G> struct B : B<F>::type, B<G...>::type {
+ using type = B;
+ using B<F>::type::operator();
+};
+template <typename F> struct B<F> { using type = F; };
+struct {
+ template <typename... F,
+ typename Overload = typename B<typename A<F>::type...>::type>
+ Overload operator()(F...){}
+} a;
+int main() {
+ auto f = a([](int) {}, [](float) {});
+ f({});
+}