clone of Boost.MPL except using variadic templates