Mega Code Archive

 
Categories / C++ Tutorial / Template
 

Demonstrate non-type template arguments

#include <iostream> #include <cstdlib> using namespace std; //int size is a non-type agument template <class T, int size> class MyType {   T a[size]; public:   MyType() {     for(int i=0; i<size; i++)        a[i] = i;   }   T &operator[](int i){       if(i<0 || i> size-1) {         cout << "\nIndex value of ";         cout << i << " is out-of-bounds.\n";         exit(1);       }       return a[i];   } }; int main() {   MyType<int, 10> intob;   MyType<double, 15> doubleob;   cout << "Integer array: ";   for(int i=0; i<10; i++)      intob[i] = i;   for(int i=0; i<10; i++)      cout << intob[i] << "  ";   cout << '\n';   cout << "Double array: ";   for(int i=0; i<15; i++)      doubleob[i] = (double) i/3;   for(int i=0; i<15; i++)      cout << doubleob[i] << "  ";   cout << '\n';   intob[12] = 100; // generates runtime error   return 0; } Integer array: 0 1 2 3 4 5 6 7 8 9 Double array: 0 0.333333 0.666667 1 1.33333 1.66667 2 2.33333 2.66667 3 3.33333 3.66667 4 4.33333 4.66667 Index value of 12 is out-of-bounds.