http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49107
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu.org --- Comment #8 from Jason Merrill <jason at gcc dot gnu.org> 2011-06-04 05:55:15 UTC --- This is not an arg-dependent lookup issue. Here, instantiating std::pair<VectorH3<Kernel>> involves evaluating noexcept(ploum<VectorH3<Kernel>>::value), which means evaluating decltype(::new VectorH3<Kernel>(declval<VectorH3<Kernel>>())), so invoking a VectorH3 constructor, so considering all the possible constructors, in particular VectorH3(const Line_3&). To evaluate how good that match is, we need to instantiate Line_3, which fails as you see. The resolution of core 1092 might make this work, though. It isn't reflected in the issues list, but the discussion in Madrid suggested that we should always ignore constructors taking non-related types when trying to copy an object of the same type.