如何在类型变体和类型指针变体之间复制

Pio*_*trK 3 c++ stl std-variant

所以我有两个变体(我缩短了它们,它们有更多类型):

std::variant<int *, double *> PtrVariant;
std::variant<int, double> ValueVariant;
Run Code Online (Sandbox Code Playgroud)

我想在它们之间复制价值。

这不起作用:

ValueVariant = *PtrVariant;
Run Code Online (Sandbox Code Playgroud)

这有效:

if (std::holds_alternative<int>(ValueVariant))
  ValueVariant = *std::get<int *>(PtrVariant);
else if (std::holds_alternative<double>(ValueVariant))
  ValueVariant = *std::get<double *>(PtrVariant);
Run Code Online (Sandbox Code Playgroud)

有没有办法在它们之间复制值而不检查变体持有什么类型?

Jar*_*d42 6

用于std::visit进行调度:

std::visit([&](auto* p){ ValueVariant = *p; }, PtrVariant);
Run Code Online (Sandbox Code Playgroud)