Geoffrey Irving
Hello,
I would like to be able to write code like this:
int i; for F in LIST_OF_TYPES complicated_function<F>(i);
where this code is inside some other function which is inside a class templatized over LIST_OF_TYPES. Given the lack of nested functions and classes in C++ functions, am I correct in thinking that it's impossible to do this sort of thing inside another function?
Okay, what's wrong with boost::mpl::for_each? Argh, no wonder! Why
isn't that in the reference manual?
I'm afraid you'll have to read http://www.boost-consulting.com/mplbook
for documentaiton on for_each :(
This general approach should work:
// Just in case T can't be constructed and passed by value
template <class T>
struct wrap {};
struct call_complicated
{
// You could also use boost::bind for this
call_complicated(int i) : i(i) {}
int i;
template <class T>
void operator()(wrap<T>) const
{
complicated_function<T>(i);
}
};
template <class list_of_types>
class foo
{
void some_function()
{
int i;
mpl::for_each