Это возвращает ссылку на местный. Должно быть
AA movetest() { return AA(); }
Этот код требует наличия конструктора перемещения или копирования, но MSVC будет использовать оптимизацию возвращаемого значения и фактически не будет вызывать либо. В общем, вы должны проектировать свои объекты так, как если бы движения или копии происходили вне вашего контроля - просто поддерживайте согласованное состояние вашего объекта, не полагайтесь на их побочные эффекты.
VC2010 правильно предпочитает перемещение для копирования, например, при отладочной сборке
AA movetest ()
{
AA a;
вернуть;
}
вызывает конструктор AA (AA &&), а не конструктор AA (AA &&).