
Hi all, I'm having some difficulties getting the following piece of code to compile: #include <iostream> #include <vector> #include <boost/utility.hpp> #include <boost/bind.hpp> #include <boost/tuple/tuple.hpp> class AClass { public: AClass(){} void b(int i, int j, int k) { std:: cout << "a::b() - " << i << "\t" << j << "\t" << k << std::endl; } }; template <typename T,int i> class select { public: typedef typename boost::tuples::element<i,T>::type result_type; template <typename U> result_type operator()(const U& u) const { return u.get<i>(); } }; int main(int argc, char* argv[]) { typedef boost::tuples::tuple<AClass,int,int,int> param_set; std::vector<param_set> list; list.push_back(param_set(AClass(),1,2,3)); list.push_back(param_set(AClass(),2,3,4)); list.push_back(param_set(AClass(),3,4,5)); list.push_back(param_set(AClass(),4,5,6)); list.push_back(param_set(AClass(),5,6,7)); std::for_each( list.begin(), list.end(), boost::bind(&AClass::b, boost::bind(select<param_set,0>(),_0), boost::bind(select<param_set,0>(),_1), boost::bind(select<param_set,0>(),_2), boost::bind(select<param_set,0>(),_3))); return true; } Basically the "select class" is a code snippet I found on this list, the compilation errors I believe exist in how I'm calling bind, but I cant tell whats going wrong. Also I'm wondering is there a better way of doing what I'm trying to do, is there already a class or something in boost that will allow one to bind a function and a tuples of parameters. Also I'm wondering if it will be possible to derive AClass from boost::noncopyable and still be able to instantiate class instances as part of method parameters. Any help would be very much appreciated. Arash Partow ________________________________________________________ Be one who knows what they don't know, Instead of being one who knows not what they don't know, Thinking they know everything about all things. http://www.partow.net