我有以下代码:
std::variant<A, B> foo();
std::variant<A, B, C> bar();
std::variant<A, B, C> foobar(bool a) {
if (a) {
return foo();
} else {
return bar();
}
}
然而,这在gcc上无法编译:
error: could not convert ‘foo()’ from ‘variant<A, B>’ to ‘variant<A,B,C>’.
有一种优雅的方法可以将
std::variant<A, B>
转换成 std::variant<A, B, C>
吗?
variant
不能转换为其他类型的variant
。 - Nicol Bolasstd::variant<A, B>
不是一个std::variant<A, B, C>
。它们是不同的类型。你为什么认为你可以在它们之间进行转换呢?记住:强制类型转换并不会转换任何东西,它只是通过不同的眼镜重新解释位。 - Jesper Juhlvariant_cast(foo())
可以正常工作。 - KamilCuk