【发布时间】:2016-12-16 04:24:25
【问题描述】:
我有一个看起来像这样的模板:
template< typename T, void (*f)( T& param )>
class SomeAction
{
...
};
f用在SomeAction里面(其实f是类成员,不过我觉得没关系)。
问题是:可以通过从模板参数列表中删除 'typename T' 并让编译器推断该类型来改进吗?
谢谢!
【问题讨论】:
-
类似的东西在 C++17 中是可能的。
-
模板实参推导只发生在C++14模板函数调用中。你必须在模板类实例化中指定模板参数,即使它是非类型参数
-
"实际上
f是一个类成员" 正如你所展示的,f是一个模板参数——它怎么可能也是一个类成员? -
f是一个标识符。它怎么可能也是一个模板参数。
标签: c++ templates c++17 type-deduction class-template