https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78457

TC <rs2740 at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rs2740 at gmail dot com

--- Comment #1 from TC <rs2740 at gmail dot com> ---
Doesn't seem to be a bug to me. This is caused by basically the same issue as
the one noted in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69116#c2.

std::endl names a function template, so it's a nondeduced context. Deduction
for `std::ostream& operator<<(std::ostream& os, Y<Ts...> const& )` therefore
succeeds with Ts..., not otherwise deduced, deduced be to an empty pack. Then
during overload resolution the compiler instantiates the definition of `Y<>` to
see if it can be constructed from std::endl; that instantiation triggers a hard
error outside the immediate context as expected.

Reply via email to