我想写一个函数
template <class T>
X foo (T);
其中T
的类型为std::pair<X, X>
。
如何从X
中推断出返回类型T
?
答案 0 :(得分:3)
在你的例子中,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)
怎么样
template <class T>
T foo ( std::pair<T, T> bar );
现在T
是您要查找的类型(即问题中的X
)。
回答评论: 如果您无法更改函数签名,请查看std::tuple_element,或者如PiotrSkotnicki指出的那样,只需使用
typename T::first_type