On Thu, Nov 24, 2011 at 11:25:30AM +0100, Lionel Elie Mamane wrote: > On Thu, Nov 24, 2011 at 10:56:57AM +0100, Lionel Elie Mamane wrote:
>> I understand we don't want to touch that in stable branch, but anyone >> opposing me pushing something like that in master, and similar for >> llimit_cast and limit_cast? >> // assumptions: >> // \forall typename Type: >> // ( (::std::numeric_limits< Type >::min() == 0) XOR ( >> ::std::numeric_limits< Type >::min() < 0 && ::std::numeric_limits< Type >> >::is_signed )) >> // && (::std::numeric_limits< Type >::max() > 0 ) >> template< typename ReturnType, typename Type > >> inline ReturnType ulimit_cast( Type nValue, ReturnType nMax ) >> (...) >> else if ( ! ::std::numeric_limits< ReturnType >::is_bounded || >> ::std::numeric_limits< ReturnType >::max() > >> ::std::numeric_limits< Type >::max() ) > That should be: > else if ( ! ::std::numeric_limits< ReturnType >::is_bounded || > nMax > ::std::numeric_limits< Type >::max() ) And even then it is buggy, because I was thinking only of the case where nMax is ::std::numeric_limits< ReturnType >::max(), but it can be an arbitrary (possibly negative!) value. That thing is devilishly hard to get right... I think I have a correct version now, but I'm going to unittest the hell out of it before I commit, that's for sure! -- Lionel _______________________________________________ LibreOffice mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice
