Re: [Boost-users] Are Boost.Multi_Index and Boost.Format Planned for64-bitPortability?

Hello Freddie,
As for Boost.MultiIndex, I can confirm the lib does work in 64-bit environments (for instance, Linux PPC64, Tru64) and must also work for Win64, although I've never had actual reports about this latter platform (if you've got access to Win64, you might want to try and tell back.) With respect to /Wp64 warnings, they are of two kinds:
* C4312/C4311, conversions between differently sized types: this is a case of /Wp64 being too dumb in its analysis of the type boost::multi_index::detail::uintptr_type; this type is defined with some metaprogramming machinery to be some integral type with the same size as void*. So, it is unsigned int in Win32 and unsigned long long in Win64. But /Wp64 sees it defined as unsigned int, hence the warning. It is as if you had:
#ifdef _WIN64 typedef unsigned int integral_type; #else typedef unsigned long long integral_type; #endif void *p; integral_type x=(integral_type)p;
/Wp64 is not able to see that integral_type will be defined as unsigned long long in Win64, and emits a C4311.
Thanks for your helpful explanation. Since this types of warnings flood the compiler output, which very difficult for us to notice other more valuable warnings. Guess we'll need to figure out some way to "hide" the stupid compiler behaviour?
* Complains about some internal node classes not being constructable or about their automatic default constructors being impossible to generate. I don't see what this has to do with 64-bit portability; in any case, the compiler is right about the analysis, but not about the consequences: these classes are in effect never default constructed, their lifetime being managed through an allocator interface. This is just an overzealous warning.
Hmm... In this case, I guess I'd just try to add some default constructors for these classes without implementing them. That way, I can at least get away with this type of warnings.
So, Boost.MultiIndex must work in Win64, the best way to check this out is to actually try.
I do not have the 64-bit machine with me yet. But I'll report back later once I actually have the chance to try it out.
As for Boost.Format, I cannot say cause I'm not the maintainer, but in any case it seems to work on other 64-bit environments as per the regression tests, and potential 64-bit problems should be easy to tackle.
Thanks for your insights!
Joaqu?n M L?pez Mu?oz Telef?nica, Investigaci?n y Desarrollo
Cheers, Freddie -- Wu Yinghui, Freddie Research & Development Software Engineer Volume Interactions Pte Ltd 1 Kim Seng Promenade, #12-01 Great World City East Tower Singapore 237994 Tel: +65 62226962 (Ext 216) Fax: +65 62226215 Email: yhwu@volumeinteractions.com URL: http://www.volumeinteractions.com Important: This message is intended for the recipient(s) addressed above. It contains privileged and confidential information. If you are not the intended recipient, please notify the sender immediately by replying to this message and then delete it from your system. You must not read, copy, use, or disseminate this communication in any form. Thank you.

"Wu Yinghui, Freddie" ha escrito:
Joaquín M López Muñoz ha escrito:
* C4312/C4311, conversions between differently sized types: this is a case of /Wp64 being too dumb in its analysis of the type boost::multi_index::detail::uintptr_type; this type is defined with some metaprogramming machinery to be some integral type with the same size as void*. So, it is unsigned int in Win32 and unsigned long long in Win64. But /Wp64 sees it defined as unsigned int, hence the warning. It is as if you had:
#ifdef _WIN64 typedef unsigned int integral_type; #else typedef unsigned long long integral_type; #endif void *p; integral_type x=(integral_type)p;
/Wp64 is not able to see that integral_type will be defined as unsigned long long in Win64, and emits a C4311.
Thanks for your helpful explanation. Since this types of warnings flood the compiler output, which very difficult for us to notice other more valuable warnings. Guess we'll need to figure out some way to "hide" the stupid compiler behaviour?
Can't you use #pragma warning(disable:4311) etc.? If I'm right, you'll only need the pragmas when using /Wp64, not when actually compiling in Win64 mode. Best, Joaquín M López Muñoz Telefónica, Inevstigación y Desarrollo
* Complains about some internal node classes not being constructable or about their automatic default constructors being impossible to generate. I don't see what this has to do with 64-bit portability; in any case, the compiler is right about the analysis, but not about the consequences: these classes are in effect never default constructed, their lifetime being managed through an allocator interface. This is just an overzealous warning.
Hmm... In this case, I guess I'd just try to add some default constructors for these classes without implementing them. That way, I can at least get away with this type of warnings.
So, Boost.MultiIndex must work in Win64, the best way to check this out is to actually try.
I do not have the 64-bit machine with me yet. But I'll report back later once I actually have the chance to try it out.
As for Boost.Format, I cannot say cause I'm not the maintainer, but in any case it seems to work on other 64-bit environments as per the regression tests, and potential 64-bit problems should be easy to tackle.
Thanks for your insights!
Joaqu?n M L?pez Mu?oz Telef?nica, Investigaci?n y Desarrollo
Cheers,
Freddie
-- Wu Yinghui, Freddie Research & Development Software Engineer
Volume Interactions Pte Ltd 1 Kim Seng Promenade, #12-01 Great World City East Tower Singapore 237994 Tel: +65 62226962 (Ext 216) Fax: +65 62226215 Email: yhwu@volumeinteractions.com URL: http://www.volumeinteractions.com
Important: This message is intended for the recipient(s) addressed above. It contains privileged and confidential information. If you are not the intended recipient, please notify the sender immediately by replying to this message and then delete it from your system. You must not read, copy, use, or disseminate this communication in any form. Thank you.
------------------------------------------------------------------------ Name: signature.asc signature.asc Type: application/pgp-signature Description: OpenPGP digital signature
------------------------------------------------------------------------ _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Joaquín Mª López Muñoz
-
Wu Yinghui, Freddie