Wenn ich eine Template-Klasse haben:Kann ich in einer C++ - Vorlagenklasse den Vorlagenparameter mit dem gleichen Namen eingeben?
template<typename Layout>
class LayoutHandler : Handler {
};
und ich möchte den Parameter-Layout für den Benutzer der Klasse belichten. Dann:
template<typename Layout>
class LayoutHandler : Handler {
public:
typedef Layout Layout; // using the same name
};
VS2012 können diesen Code, kompilieren und das erwartete Ergebnis. (Ich verwende std :: is_same, um es zu überprüfen.) Ist dies in C++ 03 oder C++ 11 erlaubt?
Ich würde vermuten, es erlaubt ist, aber würde entmutigen, dass, obwohl (nur nicht gut fühlen). Ich würde es bevorzugen, wie 'typedef Layout LayoutType;' nur zur besseren Lesbarkeit. –
Persönlich bevorzuge ich nur einen Namen für eine Sache. In Konstruktoren schreibe ich auch etwas wie T :: T (int a): a (a) {} – jingyu9575
Was ist der Zweck von 'typedef' es mit dem gleichen Namen? Ich verstehe es nicht ganz. –