C++ 访问自动参数';lambda中的s型
我将lambda函数用于样板代码:C++ 访问自动参数';lambda中的s型,c++,templates,c++14,auto,decltype,C++,Templates,C++14,Auto,Decltype,我将lambda函数用于样板代码: auto import = [&](auto & value){ // Do some stuff }; 由于value实际上是一个std::vector,我需要访问它的value\u类型静态成员来调用它的一个元素上的模板函数 我尝试使用decltype,但没有成功: auto import = [&](auto & value){ decltype(value)::value_type v; }; 有什么方法可
auto import = [&](auto & value){
// Do some stuff
};
由于value
实际上是一个std::vector
,我需要访问它的value\u类型
静态成员来调用它的一个元素上的模板函数
我尝试使用decltype
,但没有成功:
auto import = [&](auto & value){
decltype(value)::value_type v;
};
有什么方法可以这样做吗?值的类型是左值引用,您无法从中获取成员类型,必须删除引用部分,例如
typename std::decay_t<decltype(value)>::value_type v;
typename std::decation\u t::value\u type v;
PS:您还需要为依赖类型名称预先添加typename
。看
在lambda参数声明中使用“auto”仅适用于c++14
。。。请更新您的问题标签typename
。@HolyBlackCat是的,因此我们需要将这两个答案结合起来以获得正确的解决方案。.是的,typename std::decation\t::value\u type工作得很好。谢谢