00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef POSITION_HH
00018 # define POSITION_HH
00019
00020 namespace catsfoot {
00021 namespace details {
00022
00024 template <size_t, typename, typename...>
00025 struct position_impl {};
00026
00028 template <size_t N, typename T, typename... U>
00029 struct position_impl<N, T, T, U...>:
00030 public std::integral_constant<size_t, N> {
00031 };
00032
00034 template <size_t N, typename T, typename U, typename... V>
00035 struct position_impl<N, T, U, V...>:
00036 public position_impl<N+1, T, V...> {
00037 };
00038
00040 template <typename T, typename... U>
00041 struct position: public position_impl<0u, T, U...> {
00042 };
00043 }
00044 }
00045
00046 #endif