эволюция std::make_pair
От: uncommon Ниоткуда  
Дата: 10.09.14 04:11
Оценка: 5 (2) :)))
Такая маленькая функция. Что может быть проще? (по мотивам 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);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.