0
我想寫你打電話像這樣的功能:匹配可變參數模板參數傳遞給拉姆達參數
f("a", 1, [](float a ) { … });
f("a", 1, "b", 2, [](float a, float b ) { … });
f("a", 1, "b", 2, "c", 3, [](float a, float b, float c) { … });
函數功能是無關緊要的。的一點是,每對字符* /整數參數f
對應於浮動參數來lambda函數。我得到儘可能的:
template <typename ...Args>
void f(Args... args, std::function<void(???)> cb);
我怎樣才能申報仿函數類型,以便其參數的基數輸入對的基數相匹配?
你需要的模板是'F'的特定那麼其他重載可以在參數不是這些類型時選擇?如果是的話,你需要一個SFINAE技術。如果沒有,我建議你做的模板比較一般,而在模板定義添加一個'static_assert',使其更容易調試不正確的電話。 – aschepler 2012-08-12 07:46:10
爲什麼不使用像'模板無效F(參數數量&&參數... args,T FUNC)'? –
kennytm
2012-08-12 07:49:34
@aschepler:該功能將僅重載對'字符*'/'int'的。當你說「SFINAE」時,你的意思是像KennyTM的建議嗎? – 2012-08-12 08:19:41