Ho qualcosa di simile:let template scegliere tra char/short/int specificando bitsize?
template<int SIZE>
struct bin {
private:
public:
struct {
int _value : SIZE;
};
}
E 'possibile cambiare il tipo di dati _value a seconda delle dimensioni? Se SIZE è < = 7, voglio _value essere un carattere. Se è> = 8 e < = 15, voglio che sia breve e se è < = 31, voglio che sia un numero intero.
grazie, è esattamente quello che stavo cercando. funziona meglio di quanto mi aspettassi. – Markus
Ad un certo punto potresti preoccuparti della velocità di compilazione. –
@ edA-qa mort-ora-y: utilizzo della memoria di compilazione e le implementazioni generalmente impongono una "profondità di ricorsione" massima fissa per l'istanziazione del modello. Se scriviamo 'bin b;' probabilmente succederà qualcosa di spiacevole. Ma supponendo che usiamo solo numeri ragionevoli, il compilatore dovrà sempre creare al massimo 31 tipi (per TU), il che IMO è improbabile che sia mai un peso significativo se non in un esempio forzato. Mi aspetto che ci siano modelli standard che impongono un sovraccarico di un paio di ordini di grandezza peggiore. –