Ich frage mich, was der Unterschied zwischen der Verwendung einer statischen Const und eine Enum-Hack bei der Verwendung von Vorlagen Metaprogrammierung Techniken ist.Template Metaprogramming - Unterschied zwischen der Verwendung von Enum Hack und statische Const
EX: (Fibonacci über TMP)
template< int n > struct TMPFib {
static const int val =
TMPFib< n-1 >::val + TMPFib< n-2 >::val;
};
template<> struct TMPFib<1> {
static const int val = 1;
};
template<> struct TMPFib<0> {
static const int val = 0;
};
gegen
template< int n > struct TMPFib {
enum {
val = TMPFib< n-1 >::val + TMPFib< n-2 >::val
};
};
template<> struct TMPFib<1> {
enum { val = 1 };
};
template<> struct TMPFib<0> {
enum { val = 0 };
};
Warum übereinander verwenden? Ich habe gelesen, dass der Enum-Hack verwendet wurde, bevor statische Const in Klassen unterstützt wurde, aber warum jetzt verwenden?
+1: eine große Frage in der Tat, und ich würde auch gerne sehen, was die Antworten sein werden, außer für die offensichtlichen. –
statische const erlaubt andere Typen als int. zum Beispiel doppelt. –