Hi list: I'm in the process of using boost::fusion::vector, with the following definition: typedef boost::fusion::vector<PmStream*, MIDIInputThread, boost::shared_ptr<boost::asio::io_service>, boost::shared_ptr<boost::thread> > InputType; I'm then constructing this using the following code: PmStream* Port; MIDIInputThread cl; InputType NewInput =InputType(Port, cl, boost::make_shared<boost::asio::io_service>, boost::make_shared<boost::thread>(boost::bind(&boost::asio::io_service::run, io.get()))); What I'm wondering is is there a way to refer to a previously declared argument in this case, I'd like to refer to the shared pointer containing the boost::asio::io_service. Given that I've not actually named this argument, could I use anything from either boost.fusion or boost.mpl to do what I require. Any help appreciated. Regards Sean.