fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. enum class Coolness { kUndefined, kUncool, kCool };
  5. enum class Tallness { kUndefined, kShort, kTall };
  6.  
  7. void MakePerson (Coolness coolness, Tallness tallness)
  8. {
  9. cout << "Coolness: ";
  10. switch (coolness)
  11. {
  12. case Coolness::kUndefined:
  13. cout << "Undefined";
  14. break;
  15. case Coolness::kUncool:
  16. cout << "Uncool";
  17. break;
  18. case Coolness::kCool:
  19. cout << "Cool";
  20. break;
  21. }
  22.  
  23. cout << ", Tallness: ";
  24. switch (tallness)
  25. {
  26. case Tallness::kUndefined:
  27. cout << "Undefined";
  28. break;
  29. case Tallness::kShort:
  30. cout << "Short";
  31. break;
  32. case Tallness::kTall:
  33. cout << "Tall";
  34. break;
  35. }
  36. cout << endl;
  37. }
  38.  
  39. inline void MakePerson (Coolness coolness)
  40. {
  41. MakePerson(coolness, Tallness::kUndefined);
  42. }
  43.  
  44. inline void MakePerson (Tallness tallness)
  45. {
  46. MakePerson(Coolness::kUndefined, tallness);
  47. }
  48.  
  49. #define MAKE_PERSON(x) \
  50. { \
  51. cout << __FILE__ << ": " << __LINE__ << endl; \
  52. MakePerson(x); \
  53. }
  54.  
  55. int main()
  56. {
  57. MAKE_PERSON(Coolness::kUncool);
  58. MAKE_PERSON(Tallness::kTall);
  59. return 0;
  60. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
prog.cpp: 57
Coolness: Uncool, Tallness: Undefined
prog.cpp: 58
Coolness: Undefined, Tallness: Tall