gpt4 book ai didi

从函数指针的参数推导 C++ 模板类型

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

我有一个看起来像这样的模板:

template< typename T, void (*f)( T& param )>
class SomeAction
{
...
};

fSomeAction 中使用(实际上f 是一个类成员,但我认为这无关紧要)。

问题是:这是否可以通过从模板参数列表中删除“typename T”并让编译器推断该类型来改进?

谢谢!

最佳答案

也许您正在寻找的 C++17 特性是 Declaring non-type template parameters with auto

我还不能测试这个,因为还没有支持这个特性的编译器,但大概它会允许你写一个 SomeAction 的部分特化,它会推导出 T

template<auto> class SomeAction;
template<void (*f)(auto&)> class SomeAction<f> {};

void foo(int&) { /* bla */ }

int main()
{
// C++17 only, no compiler support yet
SomeAction<f> s; // T deduced to be int
}

关于从函数指针的参数推导 C++ 模板类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38862325/

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