A template-argument for a non-type template-parameter shall be a converted constant expression (5.20) of the type of the template-parameter.

From [expr.const]:

A converted constant expression of type T is an expression, implicitly converted to type T, where the converted
expression is a constant expression and the implicit conversion sequence contains only [...] integral conversions (4.7) other than narrowing conversions (8.5.4),

From [dcl.init.list]:

A narrowing conversion is an implicit conversion [...] from an integer type or unscoped enumeration type to an integer type that cannot represent all the
values of the original type, except where the source is a constant expression whose value after integral
promotions will fit into the target type.

Narrowing conversions (e.g. 2 to bool or 258 to char) are ill-formed for template non-type parameters.