я хочу вернуть результат 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: почему это работает
EDIT забыл упомянуть, что мне нужен такой способ, которым я могу поместить результирующий тип в typedef
, что приведет к чему-то вроде
template <typename tuple_holder_type, typename B>
struct tuple_appender {
typedef ??? return_type;
return_type operator() /*...*/
}
Спасибо :)