Je veux écrire une fonction qui effectue des opérations bit à bit sur un paramètre qui est auto
type.
- Le type transmis peut être
unsigned int
ouint
(avec des largeurs différentes). - Je veux seulement effectuer des opérations bit à bit sur
unsigned
types.
J'ai besoin d'un opérateur qui renvoie le unsigned
version du type de données original. Dans l'exemple de fonction ci-dessous, l'"opérateur" unsigned_type
me donnerait le type de données que value
a mais assure qu'il est non signé.
-
int
->unsigned int
-
int16_t
->uint16_t
-
uint16_t
->uint16_t
Exemple de fonction :
auto bit_shifting_and_mask(auto value) -> decltype(value)
{
unsigned_type(value) unsigned_value = static_cast<unsigned_type(value)>(value);
unsigned_value >>= 8u; // Contrived bit manipulation
unsigned_value &= 0xABCDu; // here ...
return static_cast<decltype(value)>(unsigned_value);
}
Y a-t-il un moyen d'effectuer l'opération unsigned_type
par rapport à un type de données obtenu à partir de decltype
?
Merci.