// PR c++/80767 | |
// { dg-do compile { target c++17 } } | |
template <typename... Fs> | |
struct overloader : Fs... | |
{ | |
overloader(Fs... fs) | |
: Fs(fs)... | |
{ } | |
using Fs::operator()...; | |
}; | |
struct a { void foo() { } }; | |
struct b { void bar() { } }; | |
struct c { void bar() { } }; | |
int main() { | |
overloader{ | |
[](a x) { x.foo(); }, | |
[](auto x) { x.bar(); } | |
}(a{}); | |
} |