https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67228
Alisdair Meredith <alisdairm at me dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |alisdairm at me dot com --- Comment #1 from Alisdair Meredith <alisdairm at me dot com> --- Finally tracked down a simple reproducer from our own code base, that looks simpler to run into (we have had a gcc specific workaround for years, but apparently never filed a bugzilla report): template <typename T, typename A, typename... Args> T make(A, Args&&...) { return {}; } template <typename T, typename A, typename... Args> T make(A*, Args&&...) { return {}; } int main() { int * p = 0; auto x = make<int>(p, 1); } Reproducible on every gcc available on Compiler Explorer, including trunk. All other C++11 compilers pass this test. The ambiguity goes away if I remove the parameter pack argument at the call site (i.e., deduce an empty pack).