I tried something similar, until now without success. My first successful attempt was to create for a different number of template parameters different templates via boost praeprocessor makros. In your examples would this be
template <typename P1, ......>
do_something(boost::fusion::vector<P1, ....> const& v)
Since I had to use VC10 I could not use a solution with variadic templates. Perhaps this helps you further, even the question is rather old.