比方说,我们有一个类模板,像这样:扣除功能
template<typename F>
class A
{
public:
template<typename... Args>
A(F f, Args... args)
{ /* Do something... */ }
};
,现在我想用它在某些方面像这样的:
A<int(int)> a(::close, 1);
现在的问题是:是有没有办法省略<int(int)>
,因为编译器可以知道::close
的这个信息?没有必要保存模板的“设计”。
至于具体的任务,我需要设计一个类的模板。此类的对象可以在构造时为此函数提供函数和参数,并稍后调用此函数。
我相信制作这些工厂函数的正确方法是在'A'上使用'std :: decay'或类似的特征。这将使它成为'A >'。见http://en.cppreference.com/w/cpp/utility/optional/make_optional或其他'make_ *'参考 –
KABoissonneault
@KABoissonneault是的,如果我使用通用引用,我应该使用'std :: decay' ,我已经更新了答案。 – Holt
我不太明白这个问题,所以就是答案。整个目标能够说'auto a(:: close,1)'? – Assimilater