[ 2009-09-30 Daniel adds: ]
I suggest to change the currently proposed paragraph for make_simple_pair
template<typename... Types> pair<typename decay<Types>::type...> make_simple_pair(Types&&... t);
Type requirements: sizeof...(Types) == 2.Remarks: The program shall be ill-formed, if sizeof...(Types) != 2....
or alternatively (but with a slightly different semantic):
Remarks: If sizeof...(Types) != 2, this function shall not participate in overload resolution.
to follow a currently introduced style and because the library does not have yet a specific "Type requirements" element. If such thing would be considered as useful this should be done as a separate issue. Given the increasing complexity of either of these wordings it might be preferable to use the normal two-argument-declaration style again in either of the following ways:
template<class T1, class T2> pair<typename decay<T1>::type, typename decay<T2>::type> make_simple_pair(T1&& t1, T2&& t2); template<class T1, class T2> pair<V1, V2> make_simple_pair(T1&& t1, T2&& t2);Let V1 be typename decay<T1>::type and V2 be typename decay<T2>::type.