29 template<
int n_,
int m_ = 0>
33 static_assert(m_ >= 0,
"parameter m_ must be non-negative");
35 static_assert(n_ > m_,
"parameter m_ must not be greater than parameter n_");
46 static_assert(n_ >= 0,
"parameters n_ = m_ must be non-negative");
47 static constexpr int value = n_;
52 struct Factorial<0, 0>
54 static constexpr int value = 1;
67 template<
int n_,
int k_>
71 static_assert(k_ > 0,
"parameter k_ must be non-negative");
72 static_assert(n_ > k_,
"parameter k_ must not be greater than parameter n_");
75 static constexpr int value =
Binomial<n_-1,k_-1>::value +
Binomial<n_-1,k_>::value;
83 static_assert(n_ > 0,
"parameter n_ must be non-negative");
84 static constexpr int value = 1;
89 struct Binomial<n_, 0>
91 static_assert(n_ > 0,
"parameter n_ must be non-negative");
92 static constexpr int value = 1;
99 static constexpr int value = 1;