小编Lem*_*mko的帖子

函数模板适用于本地lambda,但不适用于其他函数

所以我写了一个函数,它组成了"顺序"的void lambdas,这样我就可以在算法中一次使用它们:

template <typename F, typename... Fs>
auto lambdaList(F f, Fs... fs)
{
    return [=] (auto&... args) { f(args...); lambdaList(fs...)(args...); };
}

template <typename F>
auto lambdaList(F f)
{
    return [=] (auto&... args) { f(args...); };
}
Run Code Online (Sandbox Code Playgroud)

如果我使用本地lambda,它可以工作,但是当我在不同的命名空间中使用函数时,它不起作用:

#include <iostream>

namespace foo {
    void a() { std::cout << "a\n"; }
    void b() { std::cout << "b\n"; }
}

template <typename F, typename... Fs>
auto lambdaList(F f, Fs... fs)
{
    return [=] (auto&... args) { f(args...); lambdaList(fs...)(args...); };
}

template <typename …
Run Code Online (Sandbox Code Playgroud)

c++ lambda templates c++14

3
推荐指数
1
解决办法
86
查看次数

标签 统计

c++ ×1

c++14 ×1

lambda ×1

templates ×1