#include <iostream>
#include <string>
#include "exercises.hh"
int main(int argc, char *argv[])
{
std::cout << "Template Exercises" << std::endl;
std::cout << "\nFirst Exercise:" << std::endl;
std::cout << "abs(-3); => " << abs(-3) << std::endl;
std::cout << "abs(-2.4); => " << abs(-2.4) << std::endl;
std::cout << "abs<int>(-4.1); => " << abs<int>(-4.1) << std::endl;
std::cout << "\nSecond Exercise:" << std::endl;
Stack<int> stack;
stack.push(1); stack.push(2); stack.push(3);
std::cout << "Popping 3 times after pushing 1, 2 and 3 => ";
std::cout << stack.pop() << ", ";
std::cout << stack.pop() << ", ";
std::cout << stack.pop() << std::endl;
std::cout << "\nThird Exercise:" << std::endl;
std::cout << "makeArray<3, int>(10); => ";
int *array1 = makeArray<3, int>(10);
std::cout << "[";
for(int i = 0; i < 2; ++i) std::cout << array1[i] << ", ";
std::cout << array1[2] << "]" << std::endl;
std::cout << "makeArray<2>(std::string(\"templates\")); => ";
std::string *array2 = makeArray<2>(std::string("templates"));
std::cout << "[" << array2[0] << ", " << array2[1] << "]" << std::endl;
std::cout << "makeArray<1>(static_cast<float>(1.3)); => ";
float *array3 = makeArray<1>(static_cast<float>(1.3));
std::cout << "[" << array3[0] << "]" << std::endl;
delete[] array3;
delete[] array2;
delete[] array1;
return 0;
}