[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