#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 |