【问题标题】:Language feature to apply function to each element of a parameter pack将函数应用于参数包的每个元素的语言功能
【发布时间】:2016-04-12 06:37:05
【问题描述】:

有谁知道,如果有一个 c++ 语言功能的标准提案可以让我替换它(感谢 Yakk):

template<class... ARGS>
void bar(const ARGS& ... args) {        
    auto t = { (foo(args),0)... };
    (void) t; //<- prevent warning about unused variable
}

像这样更自然:

template<class... ARGS>
void bar(const ARGS& ... args) {        
    foo(args)...;
}

foo 是例如一个函数、一个函数模板和/或一组重载的函数,它们的返回类型可能是 void(或者通常我不关心)。

顺便说一句,如果有人知道用 c++14 编写这个更简洁的方法,请随时分享,但我认为,这已经在 this question 中处理了

【问题讨论】:

    标签: c++ standards variadic-templates c++17


    【解决方案1】:

    fold expression 与逗号运算符一起使用:

    ( void(foo(args)) , ...);
    

    我在最近的邮件中没有看到任何进一步更改此设置的建议。

    【讨论】:

    • 这确实是一个不错的功能 - 这已经被投票纳入下一个标准还是只是提议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2014-09-24
    • 2017-09-15
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多