2014-02-15 12 views
6

Wie erklärt man eine variadische Template-Funktion als Freund?Wie erklärt man eine variadische Vorlage als Freund?

Zum Beispiel wie folgt:

template<class T> 
class A 
{ 
    friend ??? MakeA ??? ; // What should be placed here ??? 

    A(T) 
    {} 
}; 

template<class T, class... Args> 
A<T> MakeA(Args&&... args) 
{ 
    T t(std::forward<Args>(args)); 

    return A(t); 
} 

Antwort

9

Es ist ganz einfach. Es ist einfach eine Vorlage-Deklaration mit dem hinzugefügten friend Spezifizierer:

template<class T> 
class A 
{ 
    template<class T1, class... Args> 
    friend A<T1> MakeA(Args&&... args); 

    A(T) { } 
}; 
Verwandte Themen