c++

공부

이야기prog 2025. 5. 6. 21:48

#include <iostream>
#include <tuple>

template <int... Remains>
struct seq
{};

template <int N, int... Remains>
struct gen_seq : gen_seq<N - 1, N - 1, Remains...>
{};

template <int... Remains>
struct gen_seq<0, Remains...> : seq<Remains...>
{};

template <typename Ret, typename... Args>
void xapply(Ret(*func)(Args...), std::tuple<Args...>& tup)
{
return xapply_helper(func, gen_seq<sizeof...(Args)>(), tup);
}

template<typename F, typename... Args, int... ls>
void xapply_helper(F func, seq<ls...>, std::tuple<Args...>& tup)
{
(func)(std::get<ls>(tup)...);
}

void print(int a, int b)
{
std::cout << a << " " << b << std::endl;
}

int main()
{
auto tup = std::tuple<int, int>(1, 2);
xapply(print, tup);
}

 

c++ 17에 std::apply를 c++ 11에서 사용하기위한 template

'c++' 카테고리의 다른 글

오늘 구현중 에러사항  (1) 2025.04.21
c++ 공부(algorithm)  (0) 2025.03.08
c++공부(list iterator 구현)  (0) 2025.03.07
c++ 공부(vector iterator 구현)  (0) 2025.03.06
c++ 공부  (1) 2025.03.03