[C++] std::apply 구현해보기
[C++] std::apply 구현해보기
2025.06.05std::tuple은 생성시 variadic 인수를 지원합니다.따라서 개수와 타입이 정해지지 않은 원소들을 담아둘 수 있습니다.이러한 특성으로 functor를 만들때 자주 사용됩니다.이때, 튜플의 각 원소들을 함수의 인수로 전달할때 std::apply가 사용됩니다.이것을 구현해 보겠습니다. 우선 전역 함수를 하나 만들겠습니다. templatedecltype(auto) MyApply(Fp&& fp, VdTuple&& tpl){} 반환형을 auto로 준 이유는 Fp로 들어오는 함수가 어떤 반환형을 가져도 상관이 없게 만들 것 이기 때문입니다.이제 내부의 구현을 해야합니다. 자 그럼 여기서 이해를 돕기 위해서 예시를 하나 들겠습니다.직접 하나씩 구현을 한다면 어떻게 될까요? 가령, 이런 함수가 있다고 한다면,..
[C++] functor 만들기
[C++] functor 만들기
2025.06.04프로그램을 작성하다보면, 동적인 시점에 작업 자체를 생성 하고 싶은 경우가 생깁니다.상태를 확인하고 분기하도록 작성된 코드가 컴파일 된 상황이 아닌 상황.이벤트내지는 태스크라고 생각하시면 이해가 쉬울 것 입니다.당연히 객체로 구현할 수 있어야 합니다.그래야 다른 스레드로 그것을 던져 줄 수 있을 것이고,처리 시점을 임의로 정할 수도 있을 것 입니다. 실행할 함수의 시그니처가 어떻던 간에, 추상화 할 수 있어야 합니다.그래서 인터페이스를 하나 만듭니다.//이 타입으로 추상화 하기로 합니다.class MyFunctor{protected: MyFunctor() {} virtual ~MyFunctor() {}; //하위 클래스에서 재정의, 각각의 함수와 인자를 사용해서 분기 virtual void Dispatc..