Advertisement
cor3ntin

Untitled

Aug 19th, 2013
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.61 KB | None | 0 0
  1. namespace detail {
  2.   struct any { template<typename T> any(T &&) {} };
  3.   template<typename T, typename U> struct fst { typedef T type; };
  4.   template<typename ...Ts> struct select_impl {
  5.     template<typename U, typename ...Vs>
  6.     static U &&select(typename fst<any, Ts>::type..., U &&u, Vs &&...) {
  7.       return static_cast<U&&>(u);
  8.     }
  9.   };
  10. }
  11.  
  12. template<typename T, typename ...Ts>
  13. auto back(T &&t, Ts &&...ts) -> decltype(detail::select_impl<Ts...>::select(static_cast<T&&>(t), static_cast<Ts&&>(ts)...)) {
  14.   return detail::select_impl<Ts...>::select(static_cast<T&&>(t), static_cast<Ts&&>(ts)...);
  15. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement