2016-07-22 10 views
2
template <typename T> 
struct A 
{ 
    template <typename T1> 
    struct B {}; 
}; 

template <typename T> 
using b = A<T>::B; 

Die obige Zeile verweigert die Kompilierung.Ist es möglich, eine Klassenvorlage in C++ umzubenennen?

Klirren diesen Fehler gibt: Verwendung von Klassenvorlage 'A < T> :: type' erfordert Vorlage Argumente

+3

fehlt Typname ist, A :: B ist ein abhängiger Typ. – Borgleader

+0

'struct A' könnte eine Template-Spezialisierung haben, wobei' A :: B' (zum Beispiel) eine statische Variable anstelle eines Typs sein könnte. Also müssen Sie für den Compiler angeben, dass Sie erwarten, dass 'A :: B' ein Typ ist, indem Sie' typenname 'davor schreiben. – KABoissonneault

Antwort

3

weil B-Vorlage sollte vorgesehen eine Vorlage Argument

template <typename T> 
struct A 
{ 
    template <typename T1> 
    struct B {}; 
}; 

template <typename T,typename T1> 
using b = typename A<T>::template B<T1>; 
Verwandte Themen