Hugo Duncan <[EMAIL PROTECTED]> writes: > I am trying to use MPL to generate code. > > I have a list of types, which I would like to use to call a template > function with arguments that are not dependent on the list. > > eg > > given: > template <typename T> void my_function(std::string& s); > typedef list<int, float, double> my_list; > std::string s; > > what do I write using MPL to generate the equivalent of the following ? > > my_function<int>(s); > my_function<float>(s); > my_function<double>(s);
With the latest CVS, it would be something like this: struct func { func(std::string& s) : s(s) {} template <class T> void operator()(T) const { my_function<T>(s); } private: std::string& s; }; mpl::for_each<my_list>(func(s)); If you have any reference or array types in my_list, you might need to do this instead: struct func { func(std::string& s) : s(s) {} template <class T> void operator()(mpl::identity<T>) const { my_function<T>(s); } private: std::string& s; }; mpl::for_each<my_list, mpl::make_identity<> >(func(s)); HTH, Dave -- David Abrahams [EMAIL PROTECTED] * http://www.boost-consulting.com Boost support, enhancements, training, and commercial distribution _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost