我想std::tuple_cat
从我的函数返回结果,但我无法推断出返回类型
#include <tuple>
struct H {
typedef std::tuple<int,int> tuple_type;
tuple_type a {1,2};
};
template <typename tuple_holder_type, typename B>
???
func(tuple_holder_type h, B b) {
return std::tuple_cat(h.a,std::make_tuple(b));
}
int main(int argc, char const *argv[]) {
auto h = H();
auto b = 3;
auto c = func(h,b);
return 0;
}
我试图结合std::result_of
并std::tuple_cat
喜欢这样
typename std::result_of<std::tuple_cat(tuple_holder_type::tuple_type,std::tuple<B>) >::type
但只收到错误消息
test.cpp:9:85: error: template argument 1 is invalid
test.cpp:9:86: error: expected identifier before '::' token
test.cpp:10:1: error: expected initializer before 'func'
问题:我要放什么而不是问号才能使它起作用
奖金 q:为什么它有效
编辑
忘了提到我需要这样一种方式,我可以将结果类型放入 a 中typedef
,从而产生类似
template <typename tuple_holder_type, typename B>
struct tuple_appender {
typedef ??? return_type;
return_type operator() /*...*/
}
谢谢你 :)