Roy Stogner writes:
 > 
 > 
 > On Wed, 23 Jan 2008, John Peterson wrote:
 > 
 > > Jan Biermann writes:
 > > > Hi developers,
 > > >
 > > > I just downloaded the latest libmesh version and when I compile it in
 > > > complex mode, the compiler throws an error from distributed_vector.h:
 > > >
 > > > In member function »Real DistributedVector<T>::min() const [with T =
 > > > std::complex<double>]«:
 > > > src/numerics/numeric_vector.C:182:   instantiated from here
 > > > /libmesh/include/numerics/distributed_vector.h:695: error: ungültiges
 > > > static_cast vom Typ »const std::complex<double>« in den Typ »double«
 > > >
 > > > (and the same for the Real DistributedVector<T>::max() )
 > > >
 > > > The wired thing is though, that my 2.5 years old version of libmesh has
 > > > exactly the same line in the code that throws an error in the new
 > > > version but it works (  double local_min =
 > > > static_cast<double>(*std::min(_values.begin(), _values.end()));).
 > > >
 > > >  So what changed since?
 > >
 > > I'm not sure what's changed... Roy has factored out some MPI routines
 > > into the Parallel:: namespace, but this isn't the problem.  What is the
 > > proper way of casting from from complex to double anyway?  Does it just
 > > take the real part?  Is that what we want for min/max?
 > 
 > Is that line of code even correct for Reals?  std::min isn't supposed
 > to operate on container iterators, it's just supposed to return the
 > minimum of two elements with a defined operator<.  There's a
 > std::min_element which is probably what the author (I hope it wasn't
 > me...) was thinking of.

Wow, I think you are exactly right.  So could this have compiled all
this time because operator< is valid for two iterators, which may be
all the internals of std::min() would have needed?  Looks like the
code has been this way as far back as SVN goes, making it pre-open
source LibMesh.

-J


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to