#include using namespace std; //****************************************************** // HackerRank Prepare C++: Class Template Specialization //****************************************************** enum class Fruit { apple, orange, pear }; enum class Color { red, green, orange }; template struct Traits; template <> struct Traits { static const char* name(int index) { switch (index) { case 0: return "red"; case 1: return "green"; case 2: return "orange"; default: return "unknown"; } } }; template<> struct Traits { static const char* name(int index) { switch(index) { case 0: return "apple"; case 1: return "orange"; case 2: return "pear"; default: return "unknown"; } } }; int main() { vector>>> testCases = { //{1, {{0, 0}} }, //{2, {{1, 0},{3,3}} }, {9, {{0, 0},{0, 1},{0, 2},{1, 0},{1, 1},{1, 2},{2, 0},{2, 1},{2, 2}} }, }; for (auto& tc: testCases) { for (auto& i: get<1>(tc)) { int index1 = i.first; int index2 = i.second; cout << Traits::name(index1) << " "; cout << Traits::name(index2) << "\n"; } cout << "-----------" << endl; } return 0; }