簡體   English   中英

如何在帶有函數對象的C ++ 03中保持模板推理?

[英]Way to keep template inference in C++03 with function objects?

我想提供一個(模板化的)函數,(帶有一個)帶有給定返回類型的函數式對象作為參數,並且理想情況下,我希望能夠在沒有顯式模板參數的情況下調用該函數。

到目前為止,我嘗試了:

template<A, B, F>
B some(A a, F f) { return f(a); }

template<A, B>
B some(A a, B (*f)(A)) { return some<A, B, B (*)(A)>(a, f); }

在我有重載的地方,至少對於函數指針來說,可以使模板args完全可推斷。 現在看來我無法對std::unary_function進行模板專用化,因為它不包含operator()成員,因此不適合作為F

而且,由於我無法通知編譯器我希望F具有B operator()(A) ,所以對於仿函數似乎似乎沒有任何解決方案。 還是可能以某種方式鍵入這種鴨子?

std::unary_function只是其他類的基礎,應該提供operator() 根本不應該有unary_function實例,所以我看不到問題-帶有3個模板參數的第一個函數是此類問題的正式解決方案。

編輯:如果要在沒有顯式模板參數的情況下調用該函數,則可以使用std::result_of (C ++ 11)或boost::result_of

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM