fork download
  1. #include <array>
  2. #include <iostream>
  3.  
  4. class FacTableEntry {
  5. public:
  6. constexpr FacTableEntry (unsigned int n) : m_num (n), m_fac (faculty (n)) {}
  7.  
  8. static constexpr unsigned int faculty (unsigned int n) {
  9. return n == 1 ? 1 : faculty (n-1)*n;
  10. }
  11.  
  12. unsigned int m_num, m_fac;
  13. };
  14.  
  15. template <unsigned int N>
  16. class FacTable {
  17. public:
  18. constexpr FacTable (std::array<FacTableEntry,N> entries) : m_data (entries) {}
  19.  
  20. std::array<FacTableEntry,N> m_data;
  21. };
  22.  
  23. constexpr const FacTable<5> myFacTable {{{{1}, {2}, {5}, {7}, {15}}}};
  24.  
  25. int main () {
  26. for (auto& entry : myFacTable.m_data)
  27. std::cout << "fac(" << entry.m_num << ")=" << entry.m_fac << std::endl;
  28. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
fac(1)=1
fac(2)=2
fac(5)=120
fac(7)=5040
fac(15)=2004310016