typedefs für Template-Klassen?

7

Ist es möglich, typedef long Typen, die Vorlagen verwenden, zu verwenden? Zum Beispiel:

%Vor%

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.

    
mch 30.10.2008, 19:30
quelle

5 Antworten

14

Nein, das ist momentan nicht möglich. Es wird in C ++ 0X AFAIK ermöglicht.

Das Beste, was mir einfällt, ist

%Vor%     
Leon Timmermans 30.10.2008, 19:34
quelle
3

Wenn Sie nicht auf den Makro-Weg gehen wollen, müssen Sie für jeden Typ individuelle typedefs machen:

%Vor%     
activout.se 30.10.2008 19:36
quelle
2

Nein, aber Sie können sich mit einem 'Helfer' -Typ nähern, sehen Sie sich dieses Beispiel an.

>     
Rob Walker 30.10.2008 19:36
quelle
2

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. .

    
Konrad Rudolph 30.10.2008 19:43
quelle
1

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.

    
John Dibling 30.10.2008 19:41
quelle

Tags und Links