
5 Dec
2002
5 Dec
'02
9:21 a.m.
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; }