Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <assert.h>
- #include <type_traits>
- template<typename T, typename... Others>
- struct splitter{
- using Head = T;
- template <template <typename...> typename U> using Tail = U<Others...>;
- };
- int main() {
- static_assert( true == std::is_same<int, splitter<int, double, int>::Head>::value );
- using MyType = splitter<int,double,int>;
- using one = MyType::Head;
- using two = MyType::Tail<splitter>::Head;
- using three = MyType::Tail<splitter>::Tail<splitter>::Head;
- //using four = MyType::Tail<splitter>::Tail<splitter>::Tail<splitter>::Head;
- static_assert( true == std::is_same<int, one>::value );
- static_assert( true == std::is_same<double, two>::value );
- static_assert( true == std::is_same<int, three>::value );
- static_assert( true == std::is_same<double, splitter<int,double,int>::Tail<splitter>::Head>::value );
- return 0;
- }
Add Comment
Please, Sign In to add comment