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

David Abrahams dave at boost-consulting.com
Thu Feb 19 21:31:25 CET 2004


"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.

You can only wrap a particular *instantiation* of a function template.
I suggest picking a FloatType (probably double), and wrapping
is_positive_definite<double>.

Cheers,

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com





More information about the Cplusplus-sig mailing list