struct S { std::vector<int> data; S doStuff() && { std::cout << "rvalue "; return {std::move(data)}; } S doStuff() const& { std::cout << "const lvalue "; return {data}; } };