
Most templates in these header take an alignment parameter of type size_t, yet a few of them accept an int instead: is_aligned type_with_alignment These causes in some compilers nasty truncation warnings when using aligned_storage with its default alignment_ parameter (maximum alignment) integer conversion resulted in truncation detected during: instantiation of class "boost::aligned_storage<size_, alignment_> [with size_=16UL, alignment_=18446744073709551615UL]" at line 114 of... 1. Is there any fundamental reason why some alingment parameters are int instead of size_t? 2. If not, any objection to fixing this in the CVS? 3. Could it be the other way around, namely that aligned_storage must use ints instead of size_t's? Joaquín M López Muñoz Telefónica, Investigación y Desarrollo

Joaquín Mª López Muñoz wrote:
Most templates in these header take an alignment parameter of type size_t, yet a few of them accept an int instead:
is_aligned type_with_alignment
These causes in some compilers nasty truncation warnings when using aligned_storage with its default alignment_ parameter (maximum alignment)
[snip]
1. Is there any fundamental reason why some alingment parameters are int instead of size_t? 2. If not, any objection to fixing this in the CVS? 3. Could it be the other way around, namely that aligned_storage must use ints instead of size_t's?
Well I simply tried to change the ints to std::size_t to see what happens. (See attached patch.) The truncation warnings are gone now and the test for type_with_alignment still passes. Could any of the autors please (David Abrahams and/or Doug Gregor) please verify that this is the correct way of dealing with the issue. If yes, I will happily apply the patch myself. TIA, Markus Index: type_with_alignment.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/type_traits/type_with_alignment.hpp,v retrieving revision 1.24 diff -u -r1.24 type_with_alignment.hpp --- type_with_alignment.hpp 26 Jan 2004 12:20:03 -0000 1.24 +++ type_with_alignment.hpp 24 Aug 2004 12:19:25 -0000 @@ -158,7 +158,7 @@ #undef BOOST_TT_CHOOSE_MIN_ALIGNMENT #undef BOOST_TT_CHOOSE_T -template<int TAlign, int Align> +template<std::size_t TAlign, std::size_t Align> struct is_aligned { BOOST_STATIC_CONSTANT(bool, @@ -189,7 +189,7 @@ // This alignment method originally due to Brian Parker, implemented by David // Abrahams, and then ported here by Doug Gregor. -template <int Align> +template <std::size_t Align> class type_with_alignment { typedef detail::lower_alignment<Align> t1;
participants (3)
-
Doug Gregor
-
Joaquín Mª López Muñoz
-
Markus Schöpflin