https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92057
--- Comment #14 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to pj from comment #9) > The only modification described by the paper (relevant to this case) is the > requirement that `T_i x[] = {std::forward<T>(t)};` is well formed, That code gives you a diagnostic, as required for a narrowing conversion. G++ chooses to give a warning for some narrowing conversions (see the manual for details) because otherwise too much reasonable code is rejected. A warning is a diagnostic, so this is allowed by the standard. In SFINAE contexts narrowing conversions are always disallowed, not justwarnings. The variant constraints are SFINAE contexts. So narrowing conversions are disallowed. There is no GCC bug here. Really.