gpt4 book ai didi

c++ - 声明适用于 auto 但不是通过显式声明类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:28 26 4
gpt4 key购买 nike

<分区>

我有以下类(class):

struct pool : public std::enable_shared_from_this<pool> {
private:
struct manager {
explicit manager(const std::weak_ptr<pool> &pool) : m_pool{pool} {
}
explicit manager() = default;
auto operator()(connection *conn) -> void;

private:
std::weak_ptr<pool> m_pool;
};

public:
pool(const pool &) = delete;
auto operator=(const pool &) -> pool & = delete;

auto borrow() noexcept -> std::unique_ptr<connection, manager>;
}

哪里connectionpool 具有相同的可见性.

在我的测试中,我可以使用 borrow()自动:

auto p = std::make_shared<pool>();
auto conn = p->borrow();

但是我不能声明一个与borrow()的返回类型相同类型的变量:

std::unique_ptr<connection, manager> conn;

clang 返回错误:

error: 'manager' is a private member of 'dbc::detail::pool'

这两者不应该可以互换吗?

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