zoukankan      html  css  js  c++  java
  • 引用文章 如何在lambda中引入递归调用

    // clang++ 3.5
    // maybe gcc 4.9 support it, but I don't test it
    #include<iostream>
    int main()
    {
        auto fac = [&](auto&& self, int x)->int{
            return x < 1 ? 1 : x * self(self, x - 1);
        };
        std::cout<<fac(fac, 3)<<std::endl; //6
        return 0;
    }
    
    作者:蓝色
    链接:https://www.zhihu.com/question/27441424/answer/36643770
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    // clang++ 3.5
    // maybe gcc 4.9 support it, but I don't test it
    #include<iostream>
    template<typename Functor>
    struct wrapper_type
    {
        Functor functor;
        template<typename... Args>
        decltype(auto) operator()(Args&&... args) const&
        {
            return functor(functor, std::forward<Args>(args)...);
        }
    };
    
    template<typename Functor>
    wrapper_type<typename std::decay<Functor>::type> wrapper(Functor&& functor)
    {
        return{ std::forward<Functor>(functor) };
    }
    
    int main()
    {
        auto fac = wrapper([&](auto&& self, int x)->int{
            return x < 1 ? 1 : x * self(self, x - 1);
        });
        std::cout << fac(3) << std::endl; //6
        return 0;
    }

    作者:蓝色
    链接:https://www.zhihu.com/question/27441424/answer/36643770
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
     
    #include <iostream>  
    #include <typeinfo>  
    #include <functional>  
    using namespace std;  
    int main(void)  
    {  
        std::function<int(int)> product;  
        product = [&product](int n) -> int{ return n <= 1? 1 : n * product(n - 1); };  
        cout << "The answer is: " << product(5) << endl;  
    } 

    链接:https://blog.csdn.net/zenny_chen/article/details/6045596
  • 相关阅读:
    一条查询SQl是怎样执行的
    MySQL45讲笔记-事务隔离级别,为什么你改了数据我看不见
    了解一下IO控制器与控制方式
    进程的同步与互斥
    预防死锁,检测死锁,避免死锁,解除死锁....
    初识Git
    剑指offer-查找数组中重复的数字
    常见的几种进程调度算法
    操作系统-进程的状态以及转换
    中断、异常、系统调用
  • 原文地址:https://www.cnblogs.com/albizzia/p/9057805.html
Copyright © 2011-2022 走看看