/* This tutorial is to give you practice in writing class hierarchies and using traits classes. Consider that you are at a very different university from the one you are now, in which the following statements are true: 1. There are people and pandas on campus enrolled as students. 2. People and pandas are both mammals 3. There are also tutors and professors. 4. Professors don't teach: they delegate teaching to another mammal. 5. Pandas can't teach. Write a CLASS HIERARCHY for objects of type mammal person panda Write a templated TRAITS structure called teach_traits that will contain information about whether each kind of object can teach. Specialise each traits structure according to the class and the role that each individual has. Write a method in the base class that returns a boolean true value iff the individual can teach: bool canTeach(); This method must use template arguments to determine the function called for each object at compile time, NOT at run time. Write a method or methods defined for each "kind of person" (panda, person, tutor, professor) that prints out a message to say what they are teaching or whether they are delegating teaching to something else. * */