Por que é 'X x; x (); ' permitido, quando 'X' define uma conversão em ponteiro de função, mas não quando define uma conversão em um functor?

void f(int){}
typedef void (*f_ptr)(int);

struct Functor{
  void operator()(int){}
};

struct X{
  operator f_ptr(){ return f; }
};

struct Y{
  operator Functor(){ return Functor(); }
};

int main(){
  X x; Y y;
  x(5); // works ?!
  y(5); // doesn't ?!
}

xemplo ao vivo no Ideone. Resultado

error: nenhuma correspondência para a chamada para '(Y) (int)'

Q1: Por que a chamada parax(5) permitido, mesmo queX define apenas uma conversão para funcionar como ponteiro, e nãooperator()?

Q2: Por outro lado, por que a mesma coisa não é permitida, se definirmos uma conversão para outro functo

questionAnswers(1)

yourAnswerToTheQuestion