回答
如何
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