gpt4 book ai didi

c++ - 避免指定包含模板函数指针的冗余模板参数

转载 作者:太空狗 更新时间:2023-10-29 20:39:39 26 4
gpt4 key购买 nike

假设我们有这样的代码:

template <class T, void (*u)(T&)>
void Foo()
{
// store the function u internally . . .
}

做这样的事情是有原因的,我不会尝试深入探讨。但是,有什么方法可以避免在调用 Foo() 时必须指定类型 T 吗?例如,要编译,通常需要:

Foo<int, MyIntFunction>();

但是如果这个int可以从函数指针推导出来,这是否可能:

Foo<MyIntFunction>();

编辑 我知道将实际函数指针作为函数参数传递的解决方案,但是这里不需要这样做,因为它在密集循环中有一些性能缺陷。

最佳答案

在这个例子中 u 不是一个函数指针,它是一个类型(函数指针的签名)。如果你想存储一个函数指针,你需要传递它。

template<class T, class F = void(*)(T&)>
void Foo(F f)
{
// store the function pointer f here
}

这样调用:

struct SomeType {};
void bar(SomeType& x);

Foo(&bar);

这是你的意思吗?

关于c++ - 避免指定包含模板函数指针的冗余模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27112501/

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