1
템플릿을 사용하는 코드가 있습니다. 한 예는 다음과 같습니다.C++ - const vs non const member 함수 - 함수 포인터가있는 템플릿
template <class MT>
struct class_method_info;
template <class T, class Res, class... Args>
struct class_method_info<Res(T::*)(Args...)>
{
typedef std::tuple<Args&&...> ArgsTuple;
typedef T ClassType;
typedef Res RetVal;
static constexpr std::size_t ArgsCount = sizeof...(Args);
static constexpr bool IsClassMethod = true;
};
이것은 const가 아닌 멤버 함수 포인터에서 작동합니다.
Res(T::*)(Args...)
을 Res(T::*)(Args...) const
으로 변경하면 const
함수 포인터를 전달할 수 있습니다. 그러나 이것이 솔루션을 작동 시키더라도 내 코드가 엉망이되었습니다. 이제 모든 것이 두 배가되고 많은 것들이 있기 때문입니다.
다른 방법이 있습니까?
당신은 다른 하나에서 구현의 대부분을 상속 것이라고,const
this
에 대한 전문성을 추가 할 수 있습니다
당신이 구현 템플릿 부모 클래스를 생성하고 모든 통과로 간주해야 템플릿 매개 변수가 필요합니까? –
유스 케이스가 무엇인지 모르겠지만'std :: mem_fn'이 요구 사항을 충족시키지 못했 으면 좋겠어요. – Arunmu