If the validity or meaning of the program
depends on whether two constructs are equivalent,
and they are functionally equivalent but not equivalent,
the program is ill-formed, no diagnostic required.
[Example 1: template<int I>struct A{};
// IFNDR, the following declarations are functionally equivalent but not equivalenttemplate<int I>void f(A<I>, A<I+10>);
template<int I>void f(A<I>, A<I+1+2+3+4>);
— end example]