One of the requirements for two template-ids to refer to the same class or function (13.6 [temp.type] paragraph 1) is that
If we have some template of the form
template <unsigned char c> struct A;
does this imply that A<'\001'> and A<257> (for an eight-bit char) refer to different specializations?
Jens Maurer: Looks like it should say something like, “their corresponding converted non-type template arguments of integral or enumeration type have identical values.”