gpt4 book ai didi

c++ - 获取函数的 decltype

转载 作者:可可西里 更新时间:2023-11-01 17:01:32 28 4
gpt4 key购买 nike

我想获取函数的类型并创建它的 std::vector。例如,我有

int foo(int a[], int n) { return 1; }
int bar(int a[], int n) { return 2; }

像这样的函数 vector 将是:

std::vector< std::function<int(int[],int)> > v;

一般来说,decltype() 会更好,例如:

std::vector< decltype(foo) > v;

但是,这会导致编译错误。

我猜是因为decltype()无法区分

int (*func)(int[], int)
std::function<int(int[], int)>

有办法解决这个问题吗?

最佳答案

使用其中之一:

std::vector< decltype(&foo) > v;

或:

std::vector< decltype(foo)* > v;

或:

std::vector< std::function<decltype(foo)> > v;

但是,一旦 foo 过载,上述所有解决方案都会失败。另请注意,std::function 是一个以虚拟调用为代价的类型删除器。

,您可以让 std::vector 从初始化列表中推导出类模板参数:

std::vector v{ foo, bar };

关于c++ - 获取函数的 decltype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32887979/

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