2016-09-11 1 views
1

을 가변 아웃 - 오브 - 라인 I는 가변 인자 템플릿 함수의 정의에서 선언을 분리 할 필요가 있습니다템플릿 기능

struct A 
{ 
    // In-line declaration of function 
    template<typename...Args> 
    A(Args&&...args); 
}; 

// Out-of-line definition of function 
template<typename...Args> 
A<Args...>::A(Args&&...args) 
{} 

int main() 
{ 
    A a("hello"); 
    return 0; 
} 

을 ... 여기에 내가 오류입니다 (연타 3.9 OS X 10) :

main.cpp:8:2: error: expected unqualified-id 
A<Args...>::A(Args&&...args) 
^ 

'typename'을 어딘가에 넣어야합니까? 미리 도움을 주셔서 감사합니다!

답변

5

당신이 쓴 :

template<typename...Args> 
A<Args...>::A(Args&&...args) 
{} 

하지만 당신의 클래스는 클래스 템플릿 아니므로 아래 당신이

template<typename...Args> 
A::A(Args&&...args) 
{} 


심지어 경우 수행하는 방법이다 클래스 템플릿이었습니다. 아래 예는 클래스 템플릿의 템플릿 생성자

template<typename... T> 
struct A 
{ 
    // In-line declaration of function 
    template<typename...Args> 
    A(Args&&...args); 
}; 

// Out-of-line definition of function 
template<typename... T> 
template<typename... Args> 
A<T...>::A(Args&&...args) 
{}