[Bug c++/67228] Template partial ordering failure ambiguous overload
alisdairm at me dot com
gcc-bugzilla@gcc.gnu.org
Tue Nov 19 17:03:00 GMT 2019
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).
More information about the Gcc-bugs
mailing list