boost::function and template member functions

Hi! With the help of ConcreteEvoker I was able to get an (indirect) address for Test::Apply<double>. This address is obtained via automatic template instantiation, so I feel like there must be a way to achiev the same thing without ConcreteEvoker. Any comments? #include <iostream> #include "boost/function.hpp" #include "boost/bind.hpp" struct Test { template <class T> static T Apply(T t1, T t2) { return t1 + t2; } }; template <class T, class OP> struct ConcreteEvoker { static T Apply(T d1, T d2) { return OP::Apply(d1, d2); } }; int main() { boost::function<double (double, double)> test = &ConcreteEvoker<double, Test>::Apply; std::cerr << test(1.0, 2.0) << std::endl; }

On Thursday 05 December 2002 04:21 am, Markus Werle wrote:
With the help of ConcreteEvoker I was able to get an (indirect) address for Test::Apply<double>.
This address is obtained via automatic template instantiation, so I feel like there must be a way to achiev the same thing without ConcreteEvoker.
Any comments?
You could explicitly instantiate the function: boost::function<double (double, double)> test = &Test::Apply<double>; Doug
participants (2)
-
Douglas Gregor
-
Markus Werle