Berechnung und drucken der Fakultät zur compile-Zeit C++

template<unsigned int n>
struct Factorial {
    enum { value = n * Factorial<n-1>::value};
};

template<>
struct Factorial<0> {
    enum {value = 1};
};

int main() {
    std::cout << Factorial<5>::value;
    std::cout << Factorial<10>::value;
}

obige Programm berechnet die Fakultät-Wert während der Kompilierung. Ich will print factorial Wert zur Kompilierzeit statt zur Laufzeit mithilfe von cout. Wie können wir erreichen drucken die Fakultät Wert zur compile-Zeit?

Ich bin mit VS2009.

Dank!

  • Warum einfache Dinge kompliziert? Wenn Sie müssen nur Ihre Fakultät berechnet, verfassen eine übliche Programm (ohne TMP), kompilieren und ausführen.
  • ich Lerne die Grundlagen von TMP und möchte wissen, wie das Ergebnis zu kompilieren, um sicherzustellen, dass die Logik korrekt ist
  • TMP ist im Grunde eine Art von computing-Konstanten, die zur compile-Zeit. In welcher form würden Sie erwarten, dass die Ausgabe erfolgen? Im Präprozessor-es ist noch zu früh (die Konstanten werden berechnet, später), mit der "üblichen" compilation Schritt können Sie die Ausgabe nur mit cout und das wie (die erfordern, um das Programm auszuführen).
  • Was ist VS2009?
InformationsquelleAutor venkysmarty | 2011-02-12
Schreibe einen Kommentar