Affected subclause: [temp.deduct.type]
Change:
Allowance to deduce from the type of a non-type template argument
. Rationale:
In combination with the ability to declare
non-type template arguments with placeholder types,
allows partial specializations to decompose
from the type deduced for the non-type template argument
. Effect on original feature:
Valid C++ 2014 code may fail to compile
or produce different results in this International Standard
. For example:
template <int N> struct A;
template <typename T, T N> int foo(A<N> *) = delete;
void foo(void *);
void bar(A<0> *p) {
foo(p);
}