[C++-sig] Re: member function template question.

Ralf W. Grosse-Kunstleve rwgk at yahoo.com
Thu Feb 19 23:01:22 CET 2004


--- David Abrahams <dave at boost-consulting.com> wrote:
> "Ralf W. Grosse-Kunstleve" <rwgk at yahoo.com> writes:
> 
> > Your example has several layers of complexity. I believe the main trick you
> > need to know is how to use a cast to tell the compiler what you want. E.g.:
> >
> >   template <typename FloatType>
> >   bool
> >   is_positive_definite(
> >     vec3<FloatType> const& eigenvalues,
> >     FloatType const& tolerance);
> >
> >   def("is_positive_definite",
> >     (bool(*)(vec3<double> const&, double const&)) is_positive_definite);
> >
> > This is a bit cumbersome but somehow you have to define which FloatType you
> > want to use since you are crossing the boundary between compile-time
> > polymorphism and runtime polymorphism.
> 
> That won't work because is_positive_definite is a template, not a
> function.  You can't cast templates.

I agree that the other solution is better, but the code above does in fact work
with all compilers that we are using!

http://cvs.sourceforge.net/viewcvs.py/cctbx/cctbx/include/cctbx/adptbx.h?rev=1.24&view=auto

http://cvs.sourceforge.net/viewcvs.py/cctbx/cctbx/adptbx/boost_python/adptbx_ext.cpp?rev=1.9&view=auto

http://cci.lbl.gov/cctbx_build/

Are they all wrong?

Ralf


__________________________________
Do you Yahoo!?
Yahoo! Mail SpamGuard - Read only the mail you want.
http://antispam.yahoo.com/tools




More information about the Cplusplus-sig mailing list