在lambda中访问自动参数的类型。

问题描述 投票:0回答:1

我正在使用lambda函数来编写模板代码。

auto import = [&](auto & value){
   // Do some stuff
};

As value 其实是一个td::vector,我需要访问它 value_type 静态成员来调用其中一个元素的模板函数。

我尝试使用 decltype 没有成功:

auto import = [&](auto & value){
   decltype(value)::value_type v;
};

有什么方法可以做到这一点?

c++ c++11 templates auto decltype
1个回答
3
投票

的类型,我需要访问它的value_type成员来调用 value 是一个l-value-reference,你不能从它那里得到成员类型,你必须去掉reference部分,如

typename std::decay_t<decltype(value)>::value_type v;

PS: 你还需要添加 typename 预先 @Vlad 已回答)为从属类型名称。参见 我为什么要把 "模板 "和 "类型名 "这两个关键字放在哪里?.

© www.soinside.com 2019 - 2024. All rights reserved.