Какие из ниже перечисленных фрагментов кода успешно скомпилируются. (c++11. Перечисления)

enum class Color { black = 0, white, red }; Color c = Color::red; cout << (int) c << endl;
enum Color { black = 0, white, red }; Color c = red; cout << c << endl;
enum class Color { black = 0, white, red }; Color c = red; cout << (int)c << endl;
enum class Color { black = 0, white, red }; Color c = Color::red; cout << c << endl;