如何在模板化函数中检索映射框::util::variant 值

How to retrieve mapbox::util::variant value in a templated function

本文关键字:映射 util variant 检索 函数      更新时间:2023-10-16

使用mapbox::variant (https://github.com/mapbox/variant/blob/master/include/mapbox/variant.hpp),我可以执行以下操作:

using variant = mapbox::util::variant<Args...>;
variant<std::string> v;
// do something with v
...
// Get string from v:
std::string s = v.get<std::string>();

但是当我尝试通过模板函数实现这一点时,我得到了编译错误:

template <typename T>
T getValue()
{
    variant<T> value{};
    // Get value
    ...
    return value.get<T>();
}

海湾合作委员会抱怨:

../utils.hpp:52:23:错误:">"之前的预期主表达式 令 牌 返回值.get(); ^ ../utils.hpp:52:25:错误:")"标记之前的预期主表达式 返回值.get();

模板函数有什么问题?

我想你想要:

return value.template get<T>();

这个答案给出了一个很好的/全面的描述,为什么...