回答
如何
template <class T>
T foo (std::pair<T, T> bar);
現在T
是你正在尋找的類型(即你的問題X
)。
答評論: 如果你不能改變函數簽名在std::tuple_element看看,或者PiotrSkotnicki指出的那樣,簡單地使用
typename T::first_type
謝謝你的回答。這個工作理論上是可行的,但是這個函數是一個更大的庫的一部分,我不能改變函數簽名 – 1v0
@ 1v0那麼你怎麼想象改變返回類型? –
@Haatschii這裏'std :: tuple_element'比'typename T :: first_type'更好嗎? –
在你的榜樣X需要爲模板,太:
template <class T, class X = typename T::first_type >
X foo (T t);
但更好的是:
template <class T >
typename T::first_type foo (T t);
- 1. 將模板類作爲參數傳遞
- 2. 傳遞模板類作爲參數
- 3. 傳遞一個整數或類型作爲模板參數?
- 4. 將模板類作爲參數傳遞給類方法並使用模板類作爲矢量模板類型
- 5. 傳遞函數作爲參數傳遞給模板類
- 6. 如何將模板函數作爲模板類參數傳遞?
- 7. 部分模板特化 - 將類型作爲參數傳遞?
- 8. 傳遞指針的類型作爲模板參數
- 9. 將模板類作爲模板模板參數傳遞給類成員函數
- 10. 如何將模板類型作爲參數傳遞給非模板函數?
- 11. 模板:如何將非類型參數對象作爲非類型參數傳遞給另一個模板
- 12. 傳遞一個模板智能指針類型作爲模板參數
- 13. Scala傳遞類類型作爲參數
- 14. 如何將模板作爲模板參數傳遞給模板?
- 15. make_tuple傳遞類型T作爲T &&,當期待T作爲模板化參數
- 16. 傳遞指定的模板類型的模板參數
- 17. 訪問模板中函數模板參數的結果類型?
- 18. C++模板功能 - >傳遞一個模板類作爲模板參數
- 19. 傳遞模型名稱作爲參數
- 20. 傳遞窗口/類型作爲參數
- 21. 將類模板作爲函數參數傳遞
- 22. 重訪傳球類型作爲參數
- 23. 在C++中的模板中將類作爲非類型參數傳遞
- 24. 內部類型作爲模板參數
- 25. 傳遞部分專用的模板作爲模板參數
- 26. 傳遞非特模板作爲模板參數
- 27. 使用模板類的嵌套類型作爲模板參數
- 28. 傳遞模板類作爲方法的參數
- 29. 傳遞一個模板類作爲參數arg到std ::綁定
- 30. 如何實現可以作爲模板參數傳遞的類?
「T」不是一對時的預期行爲是什麼?如果它是一對兩種不同的類型呢?他們應該以某種不確定的方式工作嗎?他們應該在實例化時失敗嗎?他們是否應該在替代時失敗? – hvd