
Hi, I have an idea of something, and am not sure if Boost provides it. In short, I'd like an adapter object that "wraps" a boost::function object, and changes the interface such that all the N arguments are taken as strings, automatically converted (using lexical_cast?) to the proper types, and then invoke the boost::function object passsing in those parameters. For example, I envision something like this: #include "boost/function.hpp" #include <iostream> void func(int i, char c) { std::cout << "f called with " << i << " and " << c << std::endl; } int main() { boost::function<void(int, char)> f; f = &func; // I'm wanting something like this. boost::function_string_adapter str_f(f); // call func() but pass string args instead of int,char str_f("123", "x"); // invokes f(123i, 'x') } The magic is that boost::function knows the proper types, so the adapter could ask it to what type each string needs to be converted, then it could do a lexical_cast to get the value. My motivation for wanting this is to implement a "simple" command interpreter for a socket-based administrative interface. I pre-register a bunch of function objects, then whenever someone sends a command down the socket, it arrives as a string. The function object is looked up by name, and then the call-operator is invoked given the string arguments. Internally, the proper string-to-type converstions occur, and the boost::function is called with those values. (If the conversion fails, an exception would be perfectly reasonable.) Is this possible with anything in boost? Would the idea I show above be a good way to go, or might boost::function be the wrong approach? Thanks in advance! -- Chris