C
						
					
					
						
					
				
				
					Mit ein bisschen weiterer Spielerei erhalte ich
#include <utility>
template <typename T, typename U> struct add;
template <typename T, T a, T b> struct add<std::integral_constant<T,a>,std::integral_constant<T,b>> : std::integral_constant<T,a+b> {};
template <typename T, typename...> struct accumulate : T {};
template <typename T, typename U, typename... V> struct accumulate<T, U, V...> : accumulate<typename add<T,U>::type, V...> {};
template <typename T, T... i> struct accumulate_ : accumulate<std::integral_constant<T, i>...> {};
#include <iostream>
int main()
{
  std::cout << accumulate<std::integral_constant<int, 1>>::value << '\n';
  std::cout << accumulate<std::integral_constant<int, 1>, std::integral_constant<int,2>>::value << '\n';
//  std::cout << accumulate_<int, 1, 2>::value << '\n';
}
kein ICE mehr. Direkte Probleme bereiten also offenbar Paramterpacks aus non-type-Templateargumenten.