有没有一种方法可以将 std::any 转换回其原始类型而无需对其进行硬编码?
我知道你能做到
std::any_cast<int>(example)
但这需要您已经知道“example”是一个 int。我注意到 std::any 存储原始类型,但我似乎无法找到将其用于转换的方法。我想做这样的事情:
static_cast<example.type()>(example);
很抱歉,如果这是一个基本问题,但我觉得这可能是不可能的,所以想检查一下。
最佳答案
不,因为强制类型转换的类型必须在编译时已知,而 std::any
实例中保存的类型在运行时已知。
我想在这里指出,std::any
用例非常非常有限。您可能永远不应该在面向最终用户的代码中使用它。它的角色是 void*
的类型安全替代品。我能想到的一个用例是在某些类型删除类的实现中,以前会使用 void*
(可能类似于 std::function
)。
仔细考虑 std::any
是否真的是您所需要的。
关于c++ - 将 std::any 转换回其原始类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53056185/