我想在C++中为我的单元测试值使用heterogenous map。其他线程推荐使用带有any_cast的std::any来实现这个目的。这对于像int和double这样的基元类型很有效,但是如果我使用std::vector,我就无法检索值。
我的代码如下所示:
std::map<std::string, std::any> expected = {
{ "getInt", 1 },
{ "getDouble", 1.0 },
{ "getVector", std::vector<int> { 1, 2 } },
}
int getInt = std::any_cast<int>(expected["getInt"])
double getDouble= std::any_cast<double>(expected["getDouble"])
到目前为止,代码按预期工作,尽管较新的语言对any_cast的需求令人感到费解,但如果我尝试对向量做同样的操作,它会失败:
std::vector<int> getVector= std::any_cast<std::vector>(expected["getVector"])
是否有办法从std::any值中检索聚合?
1条答案
按热度按时间ve7v8dk21#
您必须在
std::any_cast
中包含向量的类型。代码: