https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94590
--- Comment #2 from Giuseppe D'Angelo <dangelog at gmail dot com> --- A direct effect of this in SFINAE contexts seems to be the implementation of P0608 (A sane variant converting constructor) that has landed in libstdc++ in 10.1. This code: struct S { S(long double) {} }; std::variant<double, S> v; v = 1.0L; assert(v.index() == 1); fails the assert if long double is the same as double; works otherwise.