2012-11-26 2 views
1

가변 변수 템플릿에 전달 된 모든 매개 변수를 단순히 출력하려고합니다. 이 재귀 적 접근을 시도했다 :모든 가변적 템플릿 매개 변수 출력

#include <iostream> 

template<typename TFirst, typename... Arguments> 
void Output(TFirst first, Arguments... parameters) 
{ 
    std::cout << first << std::endl; 
    Output(parameters); 
} 

template<typename TFirst> 
void Output(TFirst first) 
{ 
    std::cout << first << std::endl; 
} 

void Output() 
{ 
    // do nothing 
} 

int main() 
{ 
    Output(1.0f, 2); 
} 

그러나 나는 parameter packs not expanded with '...'을 얻는다. 아무도 여기서 무엇이 잘못되었는지 설명 할 수 있습니까?

는 --------- 편집 ------------ 여기

는 솔루션입니다 :

#include <iostream> 

template<typename T> 
inline void showArguments(T&& arg) { std::cout << arg << std::endl; } 

template<typename First, typename... Rest> 
inline void showArguments(First&& first, Rest&& ...rest) 
{ 
    showArguments(first); 
    showArguments(rest...); 
} 

int main() 
{ 
    showArguments("Hello", "World", 1, 2.3, false, true); 
} 

답변

1

될해야

template<typename TFirst, typename... Arguments> 
void Output(TFirst first, Arguments... parameters) 
{ 
    std::cout << first << std::endl; 
    Output(parameters...); 
} 

(매개 변수 뒤의 후행에 유의하십시오)