C ++ - Vorlage Nicht-Typ-Parameter Typ Abzug

8

Ich versuche, diese Arbeit zu machen:

%Vor%

Der Zweck ist, eine viel komplexere Vorlage zu vereinfachen.

Nach vielen Suchen finde ich keine Möglichkeit, dies in C ++ 0x zu tun, daher ist stackoverflow meine letzte Möglichkeit.

  • ohne Angabe aller Arten von T möglich ...
  • Ich bin auf g ++ C ++ 0x, so sexy Zeug ist erlaubt.
Gravemind 18.07.2011, 18:14
quelle

3 Antworten

5

C ++ 0x führt decltype() ein, was genau das tut, was Sie wollen.

%Vor%     
Sean 18.07.2011, 18:25
quelle
5

Es gibt keinen automatischen Vorlagenabzug für Strukturen / Klassen in C ++. Was Sie jedoch tun können, ist in etwa so (Warnung, ungeprüft!):

%Vor%

Es ist nicht so sauber wie der Code nur für die Vorlage, aber es ist klar, was es tut und ermöglicht es Ihnen, die Last der Wiederholung zu vermeiden. Wenn Sie benötigen, um mit Nicht-C ++ 0x-Compilern zu arbeiten, können Sie Boost.Typeof anstelle von declltype verwenden.

    
Karel Petranek 18.07.2011 18:25
quelle
2

Ich glaube nicht, dass Sie das tun können, Sie müssen lediglich dem Compiler mitteilen, dass dort ein Typ ist. Das nächste, was mir einfällt, ist etwa so:

%Vor%

Darüber hinaus könnten Sie vermutlich ein wenig davon ausgehen und so etwas tun:

%Vor%

Weder was Sie wollen, was Sie wollen, aber ein vernünftiger Compiler sollte in der Lage sein, einen großen Teil dieser Kompilierzeit zu machen, da Sie eine Konstante übergeben.

Können Sie näher erläutern, was Sie erreichen möchten? Werden nicht ganzzahlige Typen erlaubt? Warum zeigen Sie uns nicht die kompliziertere Vorlage, die Sie zu vereinfachen versuchen?

    
Evan Teran 18.07.2011 18:19
quelle