Desidero scrivere una struttura modello foo
tale che foo<N>::value_type
sia il numero intero più vicino (arrotondando per eccesso) a N
. Ad esempio foo<32>::value_type => uint32_t
, foo<33>::value_type => uint64_t
e foo<72>::value_type => uint64_t
.Specializzazione modello per un intervallo di valori
Per fare ciò, ho bisogno di un mezzo elegante per fornire specializzazioni parziali di foo
per un intervallo di valori, ad esempio 1 <= N <= 8
per restituire uint8_t e così via e così quarto. C'è un mezzo per raggiungere questo obiettivo senza dover specializzare tutto da 0 a 64.
Non ci sarà un modo diretto (come Mark ha detto), ma forse qualche trucco di metaprogrammazione modello intelligente. Bella domanda, in attesa di vedere le risposte. –