[%]
형덜 C++ 템플릿 질문점
익명(218.146)
2019-10-20 18:46
추천 0
#include <iostream>
#include <tuple>
template <typename Tuple
, size_t BEGIN
, typename IndexSequence
>
struct sub_tuple_impl {
};
template <typename Tuple
, size_t BEGIN
, size_t
...Indice
>
struct sub_tuple_impl<Tuple
, BEGIN
, std
::index_sequence
<Indice
...>> {
using type
= std
::tuple
<std
::tuple_element_t
<BEGIN
+ Indice
, Tuple
>...>;
};
template <typename Tuple
, size_t BEGIN
, size_t END
>
struct sub_tuple {
using type
= typename sub_tuple_impl
<Tuple
, BEGIN
, std
::make_index_sequence
<END
- BEGIN
>>::type
;
};
template <typename Tuple
, size_t BEGIN
, size_t END
>
using sub_tuple_t
= typename sub_tuple
<Tuple
, BEGIN
, END
>::type
;
sub_tuple_t
<std
::tuple
<int, float, double, char const*, double const*, double, float>, 2, 4> t
;
int main(int argc
, char argv
[]) {
auto& must_double
= std
::get
<0>(t
);
must_double
= 2.2;
auto& must_char_const_p
= std
::get
<1>(t
);
must_char_const_p
= "hello, world!";
std
::cout
<< std
::get
<1>(t
) << '\n' << std
::get
<0>(t
) << std
::endl
;
return 0;
}
std::index_sequence 쓸 때 sub_tulple_impl에서 템플릿 특수화 한번 거치고 사용했는데 저거 없이 바로 Indice 받는 방법 없어?
make_index_sequence 안써봐서 몰라 미안
ㅜ