我写了一个模板(如下所示),但无法编译
template<class t, template<typename> class iterable>
Json::Value iterable2json(const iterable<t>& cont)
{
Json::Value v;
for(const t& elt : cont)
{
v.append(elt);
}
return v;
}
std::vector<int> vec{1,2,3};
Json::Value v = iterable2json(vec)
Run Code Online (Sandbox Code Playgroud)
错误C3312:找不到类型为'const std :: _ Vector_val <_Val_types>'的可调用'begin'函数
[_Val_types = std :: _ Simple_types]
请参阅函数模板实例化'Json :: Value iterable2json,std :: _ Vector_val>(const std :: _ Vector_val <_Val_types>&)'正在编译
[_Value_type = int,_Val_types = std :: _ Simple_types]
错误C3312:找不到类型'const std :: _ Vector_val <_Val_types>'的可调用'end'函数
[_Val_types = std :: _ Simple_types]
错误C2065:'elt':未声明的标识符