在 lambda 中访问自动参数的类型
Access auto parameter's type within lambda
我正在为样板代码使用 lambda 函数:
auto import = [&](auto & value){
// Do some stuff
};
由于 value
实际上是一个 std::vector
,我需要访问其 value_type
静态成员以在其元素之一上调用模板函数。
我尝试使用 decltype
但没有成功:
auto import = [&](auto & value){
decltype(value)::value_type v;
};
有什么办法吗?
value
的类型是左值引用,不能从中获取成员类型,必须去掉引用部分,例如
typename std::decay_t<decltype(value)>::value_type v;
PS:还需要提前加上typename
(如@Vlad answered) for the dependent type name. See Where and why do I have to put the “template” and “typename” keywords?。
我正在为样板代码使用 lambda 函数:
auto import = [&](auto & value){
// Do some stuff
};
由于 value
实际上是一个 std::vector
,我需要访问其 value_type
静态成员以在其元素之一上调用模板函数。
我尝试使用 decltype
但没有成功:
auto import = [&](auto & value){
decltype(value)::value_type v;
};
有什么办法吗?
value
的类型是左值引用,不能从中获取成员类型,必须去掉引用部分,例如
typename std::decay_t<decltype(value)>::value_type v;
PS:还需要提前加上typename
(如@Vlad answered) for the dependent type name. See Where and why do I have to put the “template” and “typename” keywords?。