https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80737
--- Comment #3 from Tim Shen <timshen at gcc dot gnu.org> --- (In reply to TC from comment #1) > Looks like the constraint on the convert-everything constructor needs to > check for is_same<decay_t<_Tp>, variant> first and short circuit if that's > true. I'm not quite sure whether we need that short circuit - it's in a SFINAE environment, so if anything goes wrong, there shouldn't be a hard error. Therefore even if I agree that we should check is_same<decay_t<_Tp>, variant> first, that shouldn't affect the correctness.