// defaulted and deleted special members
#include <utility>  // std::move

struct X {
    X() = default;
    X(const X&) = delete;
    X& operator=(const X&) = delete;
    X(X&&) = default;
    X& operator=(X&&) = default;
    int v{42};
};
int main() {
    X a;
    X b = std::move(a);
    return b.v == 42 ? 0 : 1;
}
