2015-02-03 4 views
1

나는 variadic 템플릿으로 잠시 동안 놀아 왔고, 내가하고 싶은 것을 발견했지만 가능한지 여부를 모르겠습니다.템플릿 함수의 Variadic Typenames

내가 성취하고자하는 대략적인 아이디어는 개체 유형에 따라 특정 작업을 수행하는 템플릿 클래스입니다. 상속을 처리 할 수 ​​있기를 원합니다. "파생 된"클래스가 "기본"객체만을 다루는 연산에 포함될 것입니다. 나는 variadic 템플릿이 내가 필요한 것임을 알았고, 나는 그들이 원하는대로 작동하도록 할 수 없다.

기본적으로 가변 인수 대신 가변 수의 typenames를 허용하는 가변 함수를 만들 수 있는지 알고 싶습니다. 여기

는 내가 지금까지 무엇을 가지고 : 그러나

template <typename T> 
void DoesNotWork() 
{ 
    //Do stuff 
} 

template <typename T, typename ...Args> 
void DoesNotWork() 
{ 
    //Do stuff 

    DoesNotWork<Args...>(); 
} 

, 두 함수 인수의 같은 번호를 가지고 있기 때문에, 그것은 "모호한 함수 참조"오류가 발생합니다. 상단 함수를 제거하면 마지막 재귀 호출은 정의가없는 "DoesNotWork <()"을 호출하려고 시도합니다.

어떻게해야합니까? 아니면 불가능한가요?

답변

3

Args이 비어있을 때 두 기능을 모호하게 구분할 방법이 없습니다.

당신이 필요로하는 것은 :

template <typename T> 
void DoesNotWork() 
{ 
    //Do stuff 
} 

template <typename T1, typename T2, typename ...Args> 
void DoesNotWork() 
{ 
    //Do stuff 

    DoesNotWork<T2, Args...>(); 
} 
+0

감사합니다! 그게 내가 필요한 것입니다. – JubileeTheBear

+0

@JubileeTheBear, 기꺼이 도와 드리겠습니다. –

관련 문제