gpt4 book ai didi

c++ - R 值引用和 std::make_unique

转载 作者:行者123 更新时间:2023-12-01 14:48:45 24 4
gpt4 key购买 nike

假设我有一个初始化对象 Foo_obj类(class)Foo并希望创建一个指向此对象拷贝的唯一智能指针。代码auto pointer = make_unique<Foo>(Foo_obj)执行并做到这一点。但是,在查看 reference 时为 std::make_unique ,这仅接受 R 值引用作为参数,并使用这些参数调用相应类的构造函数。

我的理解是像Foo_obj这样的对象是一个左值,因此上面的代码不应该编译。我错过了什么?

最佳答案

当你有类似 template <typename T> void foo (T&& rt) {...} 的东西时发生了一种叫做引用折叠的事情,这就是迈耶斯所说的“通用引用”。简而言之,如果您传递一个右值,这将成为一个右值引用,如果您传递一个左值,这将成为一个左值引用。这样,函数完美地将所有参数转发给了unique_ptr的构造函数。 .

this 中了解有关通用引用的更多信息该男子本人的博客文章。

关于c++ - R 值引用和 std::make_unique,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60300234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com