mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 09:50:38 +08:00
PR c++/82030 - ICE inheriting from multiple lambdas
PR c++/80767 * call.c (compare_ics): Handle null candidate. From-SVN: r251549
This commit is contained in:
parent
18cb045d87
commit
3f0973e539
@ -1,3 +1,9 @@
|
||||
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
|
||||
|
@ -9561,7 +9561,9 @@ compare_ics (conversion *ics1, conversion *ics2)
|
||||
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
|
||||
|
18
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C
Normal file
18
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C
Normal file
@ -0,0 +1,18 @@
|
||||
// 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({});
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user