To my understanding, move-constructors and move-assign must be marked noexcept in order for the compiler to utilize them when, for example, reallocating inside a vector.
Move constructors on classes with const data members can also throw. Check here for more info.
const