Moving Day Insurance

Why should move constructors and move assignment operators be marked noexcept whenever possible?

A

Without noexcept, move semantics are silently disabled.

B

It is required by the standard; omitting noexcept is a compilation error.

C

Containers like std::vector fall back to copying during reallocation if the move constructor is not noexcept, forfeiting the performance benefit.

D

noexcept makes move operations run at compile time.