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;