For some reason, the following code never calls Event::Event(Event&& e)
Event a;
Event b;
Event temp;
temp = move(a);
a = move(b);
b = m
You are not using the move constructor. I think swap is implemented something like this
Event a;
Event b;
Event temp(move(a)); // this one wants to use a move constructor
a = move(b);
b = move(temp);
You want to use the move assignment operator, which doesn't exist in your code, so it falls back to the copy assignment operator.