Может быть, mpl :: equal поможет вам понять, почему это вообще не имеет значения.
Просто убедитесь, что оно одинаковое, но не обязательно одинаковое.
BOOST_MPL_ASSERT((mpl::equal<
typename pop_front<v>::type,
mpl::vector<short,int,long,long long>
>));
Это все, что вам действительно нужно; -)