Ist es möglich, typedef
long Typen, die Vorlagen verwenden, zu verwenden? Zum Beispiel:
Das geht nicht, aber gibt es eine Möglichkeit, einen ähnlichen Effekt zu erzielen? Ich möchte nur vermeiden, eine Typdefinition eingeben und lesen zu müssen, die fast die gesamte Breite meines Editorfensters abdeckt.
Nein, das ist momentan nicht möglich. Es wird in C ++ 0X AFAIK ermöglicht.
Das Beste, was mir einfällt, ist
%Vor%Wenn Sie nicht auf den Makro-Weg gehen wollen, müssen Sie für jeden Typ individuelle typedefs machen:
%Vor%Nein, aber Sie können sich mit einem 'Helfer' -Typ nähern, sehen Sie sich dieses Beispiel an.
>Die von Leon gezeigte Lösung ist kanonisch. Ein bisschen Hintergrundwissen: Dies wird als "(Template) Metafunktion" bezeichnet, da es sich im Grunde um eine "Funktion" handelt, die zur Kompilierzeit ausgewertet wird. Anstelle von Werten werden Typen behandelt: Es gibt eine Liste von Eingabetypen (die Typargumente) und es gibt einen "Rückgabewert": Der typedef, der den Typnamen "type" deklariert.
"Aufruf" funktioniert analog zum normalen Funktionsaufruf, allerdings mit einer anderen Syntax:
%Vor% Dieses Code-Konstrukt ist ein häufig verwendetes Idiom in Bibliotheken wie den Boost-Bibliotheken und sogar in der STL an einer Stelle: allocator_type::rebind<U>::other
führt das gleiche durch, mit dem einzigen Unterschied, dass die Typedef type
other
heißt. .
Es ist nicht genau das, wonach Sie fragen, aber dies könnte den gewünschten Effekt je nach Ihrer tatsächlichen Situation erreichen:
%Vor%Je nach Ihren Anforderungen müssen Sie möglicherweise einige Konstruktoren oder Operatoren hinzufügen.