[temp.func.order] (original) (raw)
[Note 3:
Since, in a call context, such type deduction considers only parameters for which there are explicit call arguments, some parameters are ignored (namely, function parameter packs, parameters with default arguments, and ellipsis parameters).
[Example 3: template<class T> void f(T); template<class T> void f(T*, int=1); template<class T> void g(T); template<class T> void g(T*, ...); int main() { int* ip; f(ip); g(ip); } — _end example_]
[Example 4: template<class T, class U> struct A { };template<class T, class U> void f(U, A<U, T>* p = 0); template< class U> void f(U, A<U, U>* p = 0); template<class T > void g(T, T = T()); template<class T, class... U> void g(T, U ...); void h() { f<int>(42, (A<int, int>*)0); f<int>(42); g(42); } — _end example_]
[Example 5: template<class T, class... U> void f(T, U...); template<class T > void f(T); template<class T, class... U> void g(T*, U...); template<class T > void g(T); void h(int i) { f(&i); g(&i); } — _end example_]
— _end note_]