gpt4 book ai didi

c++ - lambda 函数指针的返回类型

转载 作者:行者123 更新时间:2023-11-28 06:42:04 28 4
gpt4 key购买 nike

我将 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

关于c++ - lambda 函数指针的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25811585/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com