Я только начал изучать новую модель памяти C ++:
#include <string>
#include <iostream>
#include <memory>
void print(unique_ptr<std::string> s) {
std::cout << *s << " " << s->size() << "\n";
}
int main() {
auto s = std::make_unique<std::string>("Hello");
print(std::move(s));
std::cout << *s;
return 0;
}
Прямо сейчас вызов cout << *s;
приводит к segfault, как и должно быть.Я понимаю, почему это происходит.Но я также хотел бы знать, есть ли способ вернуть право собственности.Я хотел бы иметь возможность использовать значение после передачи его функции.