std::unique_ptr<int> ptr() {
std::unique_ptr<int> p(new int(3));
return p; // Why doesn't this require explicit move using std::move?
} // Why didn't the data pointed to by 'p' is not destroyed here though p is not moved?
int main() {
std::unique_ptr<int> a = ptr(); // Why doesn't this require std::move?
std::cout << *a; // Prints 3.
}
В приведенном выше коде функция ptr()
возвращает копию p
. Когда p
выходит за рамки, данные "3" должны быть удалены. Но как код работает без нарушения прав доступа?
std::unique_ptr<>
. - person πάντα ῥεῖ   schedule 17.09.2014