C++ Class Template Specialization

  • + 0 comments

    include

    using namespace std; enum class Fruit { apple, orange, pear }; enum class Color { red, green, orange };

    template struct Traits;

    template <> struct Traits { static string name(int index) { switch (index) { case 0: return "red"; case 1: return "green"; case 2: return "orange"; default: return "unknown"; } } };

    template <> struct Traits { static string name(int index ) { switch (index) { case 0: return "apple"; case 1: return "orange"; case 2: return "pear"; default: return "unknown"; } } };

    int main() { int t = 0; std::cin >> t;

    for (int i=0; i!=t; ++i) {
        int index1; std::cin >> index1;
        int index2; std::cin >> index2;
        cout << Traits<Color>::name(index1) << " ";
        cout << Traits<Fruit>::name(index2) << "\n";
    }
    

    }