Advertisement
kamos

Compile-time func

May 23rd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. #include <array>
  2. #include <iostream>
  3. #include <exception>
  4.  
  5. constexpr int requires_positive(int num) {
  6.     return (num <= 0) ? throw std::exception() : num;
  7. }
  8.  
  9. constexpr int factorial(int num) {
  10.     return (num > 1) ? num * factorial(num - 1) : 1;
  11. }
  12.  
  13. constexpr int arrangement(int k, int n) {
  14.     return requires_positive(k),
  15.            requires_positive(n),
  16.            factorial(n) / factorial(n - k);
  17. }
  18.  
  19. int main(int argc, char** argv) {
  20.     //demonstration
  21.     std::array<char, arrangement(1, 2)> good_array;
  22.     //error demonstration
  23.     std::array<char, arrangement(0, 1)> bad_array_1;
  24.     //one more error demonstration
  25.     std::array<char, arrangement(-1, 1)> bad_array_2;
  26.  
  27.     return 0;
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement