converted from svn.boost.org/svn/boost/sandbox/variadic_templates/