|
Boost Users : |
From: Toon Knapen (toon.knapen_at_[hidden])
Date: 2005-05-26 05:50:47
Following small program does not give the expected result. It prints
some big negative value if compiled with my gcc 3.4.3 on linux or
intel-linux 8.1.
However commenting out either (one suffices) of the commented out lines
makes it work correctly. I don't understand what is happening here, can
anybody what is wrong with this function 'convert' or is the use of the
conversion library wrong?
<code>
#include <boost/numeric/conversion/cast.hpp>
#include <iostream>
template<typename Target, typename Source>
inline
typename ::boost::numeric::converter<Target,Source>::result_type
//convert ( const Source& arg ) // using this signatures makes it work
convert ( Source arg )
{ return ::boost::numeric::converter< Target, Source >::convert( arg ) ; }
// { Target temp = ::boost::numeric::converter< Target, Source
>::convert( arg ) ; return temp ; }
int main() {
int big = 900 ;
ptrdiff_t diff = 16 ;
std::cout << std::min( big, convert< int >( diff ) ) << std::endl ;
return 0 ;
}
</code>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net