https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60497
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED |--- Assignee|unassigned at gcc dot gnu.org |redi at gcc dot gnu.org --- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- This issue actually touches half the library. Using std::bind with unique_ptr<B<A>> tries to complete A Using unique_lock<Something<unique_ptr<B<A>>> tries to complete A Using call_once(o, f, Something<unique_ptr<B<A>>) tries to complete A etc. etc. There are a few more unqualified std::get calls that I'm fixing, but most of the problems come from using the built-in & operator, which does ADL and so tries to complete A. That means we must use std::addressof even on internal library types without an overloaded operator& if they have any template arguments of user-defined types.