gpt4 book ai didi

c++ - 将 shared_ptr 移动到在 shared_ptr 指向的对象上调用的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:50 27 4
gpt4 key购买 nike

给定

struct X {
void f(std::shared_ptr<X>);
};
auto x(std::make_shared<X>());

我大概可以安全地做

x->f(std::move(x));

在 C++17 中,因为 x->f 在构造 X::f 的参数之前求值,对吧?据我所知,在早期版本的 C++ 中没有这样的保证。我怎样才能在 C++11 和 C++14 中实现类似的东西?

PS:请注意,即使使用 std::unique_ptr 而不是 std::shared_ptr 也是如此。

最佳答案

我认为在 C++11 和 C++14 中可以做的最好的事情是不改变接口(interface)或使用任何晦涩的宏

auto & refX = *x;
refX.f(std::move(x));

关于c++ - 将 shared_ptr 移动到在 shared_ptr 指向的对象上调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42134073/

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