Retourner au contenu associé (journal : Le bon sens et le C++)
Posté par David Demelier (site web personnel) le 14 novembre 2024 à 14:15. En réponse au journal Le bon sens et le C++. Évalué à 4.
Imaginez une API qui permet de sérialiser des données binaires en fonction du type en entrée :
#include <iostream> #include <cstdint> void pack(uint8_t x) { puts("uint8_t"); } void pack(uint16_t x) { puts("uint16_t"); } void pack(uint32_t x) { puts("uint32_t"); } void pack(uint64_t x) { puts("uint64_t"); } void pack(int8_t x) { puts("int8_t"); } void pack(int16_t x) { puts("int16_t"); } void pack(int32_t x) { puts("int32_t"); } void pack(int64_t x) { puts("int64_t"); } void pack(float x) { puts("float"); } int main() { pack(1); return 0; }
Résultat possible :
$ ./a.out int32_t
Du coup, si on veut sérialiser des entiers spécifiques à la suite on doit forcer un cast.
pack(static_cast<uint8_t>(10)); pack(static_cast<uint16_t>(1664));
Perso je vote pour des spécialisations de template ou des noms explicites (comme packu64 mais moins C++/template/metaprogramming friendly)
packu64
AI is a mental disorder
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# Beurk les conversions implicites
Posté par David Demelier (site web personnel) . En réponse au journal Le bon sens et le C++. Évalué à 4.
Imaginez une API qui permet de sérialiser des données binaires en fonction du type en entrée :
Résultat possible :
Du coup, si on veut sérialiser des entiers spécifiques à la suite on doit forcer un cast.
Perso je vote pour des spécialisations de template ou des noms explicites (comme
packu64mais moins C++/template/metaprogramming friendly)AI is a mental disorder