Obtain 
P from
T by replacing the occurrence of
type-constraintopt auto either with
a new invented type template parameter 
U or,
if the initialization is copy-list-initialization, with
std::initializer_list<U>.If the deduction fails, the declaration is ill-formed
.Otherwise, 
T′ is obtained by
substituting the deduced 
U into 
P.[
Example 1: 
auto x1 = { 1, 2 };             
auto x2 = { 1, 2.0 };           
auto x3{ 1, 2 };                
auto x4 = { 3 };                
auto x5{ 3 };                   
 — 
end example]