ошибка reinterpret_cast для enum

Почему я не могу использовать оператор reinterpret_cast для такого приведения?

enum Foo { bar, baz };

void foo(Foo)
{
}

int main()
{
   // foo(0); // error: invalid conversion from 'int' to 'Foo'
   // foo(reinterpret_cast<Foo>(0)); // error: invalid cast from type 'int' to type 'Foo'
   foo(static_cast<Foo>(0)); 
   foo((Foo)0);
}

Ответы на вопрос(2)

Ваш ответ на вопрос