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

--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Lei YU from comment #7)
> Additional information.
> 
> std::experimental::fundamentals_v1::any has no problem, so the below code
> compiles fine.

The difference is that std::experimental::any doesn't constrain the any(T&&)
constructor on is_copy_constructible<T>, instead it just makes it a hard error
(using a static assert in the constructor body).

std::any has to SFINAE the any(T&&) constructor away if T is not copy
constructible, which leads to a cycle when that constructor is being considered
during instantiation of is_copy_constructible<T>.

Reply via email to