gpt4 book ai didi

c++ - 模板仿函数无法推导出引用类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:01 25 4
gpt4 key购买 nike

我有一个仿函数 f,它有一个函数 func 和一个与 func 类型相同的参数 t。由于编译错误,我无法将 g 传递给 f (没有匹配函数来调用 f(int&, void (&)(int&)) )。如果 g 将采用非引用参数 g(int s),则编译结束。或者如果我手动指定模板参数 f<int&>(i, g) ,编译也完成。

template<typename T>
void f(T t, void (*func)(T)) {}

void g(int& s) {}

int main(int, char*[])
{
int i = 7;

f(i, g); // compilation error here

return 0;
}

我怎样才能得到扣除?

最佳答案

您可以像这样调用函数:

f<int&>(i, g);

但现在 i 也将通过引用传递。

一般来说,我也会将函数设为模板类型:

template <typename T, typename F>
void f(T t, F func)
{
func(t); //e.g
}

关于c++ - 模板仿函数无法推导出引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539361/

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