繁体   English   中英

Lambda函数指针的返回类型

[英]Return type of lambda function pointer

我有boost :: function指针存储在std :: map中。 这些指向lambda函数。 我如何获得这些的返回类型?

#include "main.h"
#include <typeinfo>

typedef std::map<std::string,boost::function<int (A*)>> str_func_map;

int main()
{
    str_func_map mapping;

    mapping["One"] = [](A *a) {return a->one();};
    mapping["Two"] = [](A *a) {return a->two();};
    mapping["B_Nine"] = [](A *a) {return a->getB().nine();};

    A aa = A();
    A* a = &aa;

    for (str_func_map::iterator i = mapping.begin(); i != mapping.end(); i++)
    {
        std::cout<< i->first << std::endl;
        std::cout<< (i->second)(a) << std::endl;
        typedef decltype(i->second) type; //How can I print out the return type of 
        //the function pointer???


    }
    system("pause");
}

boost::function (和std::function )都有一个嵌套的typedef return_type 因此,只需使用:

typedef decltype(i)::return_type TheReturnType;

// or indeed

typedef str_func_map::mapped_type::return_type TheReturnType;

当然,对于您而言,这将是int

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM