I have a struct with a non-trivial non-copyable (anyway, copyable but very expensive) member and there's a member function that I want if I call, it would transfer the ownership of the member. See the following demo code:

```
class A{
    // ...
};
struct s{
    A instance;
    A? take(){ // originally named get(), as mentioned in comment, for clarity
        return instance?;
    }
}; // Even after s is destroyed, instance should keep on

```

In other words, I want to prolong the life of `instance`, then use it in other context. I tried several ways, including `return std::move(instance)` or explicit release the object to a temporary variable, but none of them worked. They will always call the destructor of instance.

So how can I achieve that, will returning const reference help?