首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >泛型lambda可以没有参数吗?

泛型lambda可以没有参数吗?
EN

Stack Overflow用户
提问于 2015-07-03 02:20:34
回答 4查看 3.7K关注 0票数 19

首先,我知道我可以使用模板化的class/functor,但这不是我想要的。

这里是lambda:

代码语言:javascript
复制
auto lambda = [] (auto var) {
    decltype(var) x;

    //do stuff with x but nothing with var
};

问题是我收到了警告C4100(未引用的形参)。我也知道我可以使用一些技巧,比如禁用警告并在lambda之后再次启用它,或者使用诸如UNREFERENCED_PARAMETER之类的宏,但这是作弊。

我有什么办法可以做到这一点吗?

理想的代码应该是这样的:

代码语言:javascript
复制
template <typename T>
auto lambda = [] () {
    T x;

    //do stuff with x
};
EN

回答 4

Stack Overflow用户

发布于 2015-07-03 02:25:35

如果您确实不需要这个参数,只需将其封装在void中即可

代码语言:javascript
复制
auto lambda = [](auto var) {
    (void)var; // now we used it - more or less
    decltype(var) x;
    /* whatever else */
};
票数 10
EN

Stack Overflow用户

发布于 2015-07-03 02:31:18

不要使用lambda:

代码语言:javascript
复制
template<typename T>
struct Functor
{
   void operator () () { T var; ... }
}

lambda只是一个编译器生成的functor。

票数 7
EN

Stack Overflow用户

发布于 2015-07-03 02:26:48

这不是lambdas的用途,也没有语法可以做到这一点(除了删掉警告)。

只需编写一个合适的函数模板即可。并不是所有的东西都必须是lambda。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31191873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档