2009-04-21 7 views
4

Angenommen, Sie haben einen Typ wie folgt aus:D Vorlagen: Sortieren Sie eine Liste von Typen

struct Value(int v_) 
{ 
    static const v = v_: 
} 

Wie würden Sie eine Liste dieser Arten sortieren, eine Schnittstelle so etwas wie dies unter der Annahme:

alias Sorted!(Value!(4), Value!(2), Value!(1), Value!(3)) SortedValues; 

Sie können D 2.x-Funktionen verwenden, wenn dies zu einer besseren Lösung führt. Geben Sie dies jedoch an.

Ich poste meine Lösung in einem Tag oder so. :)

Antwort

1

Durch die Art und Weise, wenn Sie andere Gründe haben, es zu tun gibt es keine Notwendigkeit, den Wert in structs zu wickeln als Tupel mit Werten als auch gut funktionieren.

alias Sorted!(4, 2, 1, 3) SortedValues; 
+0

Wahr; aber ich glaube, dass Tupel mit Aliasen brechen. Die Verwendung einer Wrapper-Struktur war nur die allgemeinere Form der Frage, die mir einfiel. :) –

-1

Hier ist meine Lösung. Bemerke genauso cool wie FeepingCreatures, aber wahrscheinlich einfacher zu verstehen; Es funktioniert, indem der erste Typ rekursiv in den Rest der Liste eingefügt wird (nachdem er sortiert wurde).