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.

Reply via email to