将 unique_ptr 移出变体
Move unique_ptr outside of variant
我在变体中有一个 unique_ptr。我正在尝试这样做:
if(std::holds_alternative<std::unique_ptr<something>>(a_variant)) {
auto thing = std::get<std::unique_ptr<something>>(a_variant);
}
显然它不起作用,但如何将指针移到变体之外?
您需要 std::move
std::unique_ptr
出 std::variant
。
struct something final {};
std::variant a_variant(std::make_unique<something>());
if(std::holds_alternative<std::unique_ptr<something>>(a_variant)) {
auto thing = std::move(std::get<std::unique_ptr<something>>(a_variant));
}
或者,auto thing = std::get<std::unique_ptr<something>>(std::move(a_variant));
如果不喜欢std::move
,可以用std::shared_ptr
,可复制
我在变体中有一个 unique_ptr。我正在尝试这样做:
if(std::holds_alternative<std::unique_ptr<something>>(a_variant)) {
auto thing = std::get<std::unique_ptr<something>>(a_variant);
}
显然它不起作用,但如何将指针移到变体之外?
您需要 std::move
std::unique_ptr
出 std::variant
。
struct something final {};
std::variant a_variant(std::make_unique<something>());
if(std::holds_alternative<std::unique_ptr<something>>(a_variant)) {
auto thing = std::move(std::get<std::unique_ptr<something>>(a_variant));
}
或者,auto thing = std::get<std::unique_ptr<something>>(std::move(a_variant));
如果不喜欢std::move
,可以用std::shared_ptr
,可复制