我试图在c ++ 17(gcc7.1)
中模拟std :: visit函数template<typename ... Ts>
void myvisit(variant<Ts...> v)
{
size_t N = std::variant_size<decltype(v)>::value;
for (int i=0;i<N;++i) //try to iterate variadic pack
{
using T = decltype(get<i>(v));
if (holds_alternative<T>(v))
{
cout<< get<T>(v);
break;
}
}
}
int main()
{
using VAR = variant<int, string, double>;
vector<VAR> vv;
vv.push_back("app");
vv.push_back(123);
vv.push_back(1.02);
for(auto v:vv)
myvisit(v);
return 0;
}
我在这里得到一个问题:
错误:'i'的值在常量表达式中不可用 使用T = decltype(得到&lt; i&gt;(v));
我想知道如何解决它?