比方說,我們有一個類模板,像這樣:扣除功能
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