What's the compiler supposed to do here?

struct Dog {
  Dog const volatile *operator&(void) const volatile && = delete;
};

#include <iostream>
using std::cout;
using std::endl;
#include <utility>
using std::move;

int main(void)
{
  Dog d;

  d.operator&();  // Should this work?
  move(d).operator&();  // I don't think this should work
}