小编ser*_*gey的帖子

可变泛型 lambda 和函数重载

我foo()定义了以下可变参数泛型 lambda 和重载函数。

template <typename Lambda>
auto bar(Lambda&& lambda) {
    return [lambda = std::forward<Lambda>(lambda)](auto&& ...args) {
        return lambda(std::forward<decltype(args)>(args)...);
    };
}

void foo(std::function<void()>&& cmd, std::function<void()>&& callback) { std::cout << "void" << std::endl; }
void foo(std::function<bool()>&& cmd, std::function<bool()>&& callback) { std::cout << "bool" << std::endl; }
Run Code Online (Sandbox Code Playgroud)

以下 3 次foo()调用 print "void"。

int main()
{
    // 1
    foo(
        bar( []() {} ),
        bar( []() {} )
    );
    // 2
    foo(
        bar( []() { return true; } ),
        bar( []() …
Run Code Online (Sandbox Code Playgroud)

c++ c++14

4
推荐指数
1
解决办法
85
查看次数

标签 统计

c++ ×1

c++14 ×1