相关疑难解决方法(0)

c ++ lambdas如何从上部范围捕获可变参数包

我研究了泛型lambdas,稍微修改了这个例子,所以我的lambda应该捕获上层lambda的可变参数包.所以基本上给予上层lambda的是(auto&&...)- 应该以某种方式在[=]块中捕获.

(完美的转发是另一个问题,我很好奇这可能在这里吗?)

#include <iostream>
#include<type_traits>
#include<utility>


// base case
void doPrint(std::ostream& out) {}

template <typename T, typename... Args>
void doPrint(std::ostream& out, T && t, Args && ... args)
{
    out << t << " ";                // add comma here, see below
    doPrint(out, std::forward<Args&&>(args)...);
}

int main()
{
    // generic lambda, operator() is a template with one parameter
    auto vglambda = [](auto printer) {
        return [=](auto&&... ts) // generic lambda, ts is a parameter pack
        { …
Run Code Online (Sandbox Code Playgroud)

c++ lambda variadic-templates generic-lambda c++14

11
推荐指数
2
解决办法
4653
查看次数

标签 统计

c++ ×1

c++14 ×1

generic-lambda ×1

lambda ×1

variadic-templates ×1