#include <iostream>
using namespace std;

enum class Coolness { kUndefined, kUncool, kCool };
enum class Tallness { kUndefined, kShort, kTall };

void MakePerson (Coolness coolness, Tallness tallness)
{
	cout << "Coolness: ";
	switch (coolness)
	{
		case Coolness::kUndefined:
			cout << "Undefined";
			break;
		case Coolness::kUncool:
			cout << "Uncool";
			break;
		case Coolness::kCool:
			cout << "Cool";
			break;
	}

	cout << ", Tallness: ";
	switch (tallness)
	{
		case Tallness::kUndefined:
			cout << "Undefined";
			break;
		case Tallness::kShort:
			cout << "Short";
			break;
		case Tallness::kTall:
			cout << "Tall";
			break;
	}
	cout << endl;
}

inline void MakePerson (Coolness coolness)
{
	MakePerson(coolness, Tallness::kUndefined);
}

inline void MakePerson (Tallness tallness)
{
	MakePerson(Coolness::kUndefined, tallness);
}

#define MAKE_PERSON(x) \
{ \
	cout << __FILE__ << ": " << __LINE__ << endl; \
	MakePerson(x); \
}

int main()
{
	MAKE_PERSON(Coolness::kUncool);
	MAKE_PERSON(Tallness::kTall);
	return 0;
}