Mi chiedo quale sia la differenza tra l'uso di un const statico e un enum hack quando si usano le tecniche di metaprogrammazione del modello.Metaprogrammazione modello - Differenza tra l'uso di Enum Hack e Statatic Const
EX: (Fibonacci via 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;
};
vs.
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 };
};
Perché utilizzare uno sopra l'altro? Ho letto che l'enum hack è stato usato prima che il const statico fosse supportato all'interno delle classi, ma perché usarlo adesso?
+1: una bella domanda, e mi piacerebbe anche vedere quali saranno le risposte tranne l'ovvio. –
const statico consente tipi diversi da int. doppio per esempio. –