Вы должны сделать свой собственный шаблон функции, это ниже реализации требует C++ 14 (потому что он требует std::get<T>
, вы можете реализовать его в C++ 11 самостоятельно):
template<typename... R, typename ...Args>
std::tuple<R...> sub_tuple(const std::tuple<Args...>& original) {
return std::make_tuple(std::get<R>(original)...);
}
int main()
{
std::tuple<std::string, double, int> myTuple = std::make_tuple("Hello", 1201.0, 51);
std::tuple<std::string, int> subTuple = sub_tuple<std::string, int>(myTuple);
std::cout << std::get<0>(subTuple) << " " << std::get<1>(subTuple);
}
Примечание: это создаст копию для каждого элемента в исходном наборе
'станд :: кортеж <станд :: строка, Int> subTuple {станд :: получить <0> (myTuple), станд :: получить <2> (myTuple)}; '? – CompuChip
Что случилось с двумя? Я уверен, что вы можете сделать его более общим с некоторыми метатемами, но стоит ли это? – rubenvb
@rubenvb, я думал, что в библиотеке std это. – Velkan