https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93107
--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Marek Polacek <mpola...@gcc.gnu.org>: https://gcc.gnu.org/g:6fb7e3c29188ab7cde0b963957caf6182536c77d commit r11-4547-g6fb7e3c29188ab7cde0b963957caf6182536c77d Author: Marek Polacek <pola...@redhat.com> Date: Fri Oct 16 11:00:12 2020 -0400 c++: Deducing type from initializer_list<auto> [PR93107] In this testcase we weren't able to deduce b's type: template<typename T> void Task() { } auto b = { &Task<int> }; because resolve_nondeduced_context doesn't iterate on the {}'s elements. So make sure to look into {} too. We don't need to handle nested {} here. We could either tweak resolve_nondeduced_context to handle CONSTRUCTORs or add a _ctor version, but then resolve_nondeduced_context_or_error would need some changes too -- it'd have to check the result of a call to r_n_c for each element. gcc/cp/ChangeLog: PR c++/93107 * pt.c (do_auto_deduction): Call resolve_nondeduced_context for the elements of a { } list. gcc/testsuite/ChangeLog: PR c++/93107 * g++.dg/cpp0x/initlist-deduce3.C: New test.