首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动相关模板和函数的使用

自动相关模板和函数的使用
EN

Stack Overflow用户
提问于 2015-01-29 17:28:28
回答 1查看 88关注 0票数 1

这是传入lambda函数并返回包含n个对lambda函数调用的std::C++14的正确的样式吗?

代码语言:javascript
复制
// gen is a lambda function
auto returnN(auto gen, auto n){
    std::vector< decltype(gen()) > vec;
    for(auto i=0; i<n; i++){
       vec.push_back( gen() );
    }
    return vec;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 17:36:56

不是的。

  1. 您需要显式地使用template,除非编译器允许它作为扩展。它可能会出现在C++17。 Is auto as a parameter in a regular function a GCC 4.9 extension?

  1. 您可能希望通过通用引用获取函子/函数指针。

  1. 您忘了衰减vector的元素类型。

  1. 您的循环有一个int类型的循环变量。这是否足够..。

代码语言:javascript
复制
template<class F>
auto returnN(F&& gen, size_t n) {
    std::vector<std::decay_t<decltype(gen())>> vec; // Needs to decay
    while(n--)
        vec.push_back(gen());
    return vec;
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28220916

复制
相关文章

相似问题

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