Такая маленькая функция. Что может быть проще? (по мотивам vimeo.com/97337253)
C++98:
template <typename T1, typename T2>
std::pair<T1, T2> make_pair(T1 const & t1, T2 const & t2) {
return std::pair<T1, T2>(t1, t2);
}
C++03:
template <typename T1, typename T2>
std::pair<T1, T2> make_pair(T1 t1, T2 t2) {
return std::pair<T1, T2>(t1, t2);
}
C++11:
template <typename T1, typename T2>
constexpr
std::pair<typename std::decay<T1>::type, typename std::decay<T2>::type>
make_pair(T1 && t1, T2 && t2) {
return std::pair<typename std::decay<T1>::type, typename std::decay<T2>::type>(std::forward<T1>(t1), std::forward<T2>(t2));
}
C++14:
template <typename T1, typename T2>
constexpr
std::pair<std::decay_t<T1>, std::decay_t<T2>>
make_pair(T1 && t1, T2 && t2) {
return std::pair<std::decay_t<T1>, std::decay_t<T2>>(std::forward<T1>(t1), std::forward<T2>(t2));
}
C++17?
template <typename T1, typename T2>
constexpr
std::pair<T1, T2> make_pair(T1 t1, T2 t2) {
return std::pair<T1, T2>(t1, t2);
}