J'ai une base de code C existante qui fonctionne sur x86.No-overflow cast sur x64
Je compile maintenant pour x64. Qu'est-ce que je voudrais faire est de lancer un size_t à un DWORD, et de jeter une exception en cas de perte de données.
Q: Existe-t-il un idiome pour cela?
Voici pourquoi je fais ceci:
Un groupe d'API Windows acceptent DWORDs comme arguments, et le code prend actuellement sizeof (DWORD) == sizeof (size_t). Cette hypothèse est valable pour x86, mais pas pour x64. Ainsi, lors de la compilation pour x64, en passant size_t à la place d'un argument DWORD, génère un avertissement à la compilation.
Dans pratiquement tous ces cas, la taille réelle ne dépassera pas 2^32. Mais je veux le coder de façon défensive et explicite.
Ceci est mon premier projet x64, alors ... soyez gentil.
Vous savez ce coup de pouce est à comme la version 1.43 déjà, non? –
ouais .. bienvenue pour modifier le lien –
http://www.boost.org/doc/libs/1_43_0/libs/numeric/conversion/doc/html/boost_numericconversion/improved_numeric_cast__.html – smerlin