Your task is to implement a function that adds all tuple elements that are numbers.
For this kata chars are not considered numbers.
Solutions
🧠 C++
#include<tuple>#include<type_traits>#include<vector>usingnamespace ::std;//generic function to return double, no matter what was passedtemplate <typenameT,typename std::enable_if<std::is_arithmetic<T>() &&!is_same<T,char>()>::type*=nullptr>doubled_echo(T t){returnstatic_cast<double>(t);}template <typenameT,typename std::enable_if<!std::is_arithmetic<T>() ||is_same<T,char>()>::type*=nullptr>doubled_echo(T t){return0;}template <classTuple,size_t... Is>constexprautotake_front_impl(Tuple t,index_sequence<Is...>){returnmake_tuple(get<Is>(t)...);}//pop N front elements of the tuple into new tupletemplate <size_tN,classTuple>constexprautotake_front(Tuple t){returntake_front_impl(t, make_index_sequence<N>{});}//spectialization for LAST elementtemplate <typenameT>doubletuple_sum(consttuple<T> &&tpl){auto elmnt =get<0>(tpl);returnd_echo(elmnt);}template <typename... Ts>doubletuple_sum(consttuple<Ts...> &tpl){#definetuple_size (tuple_size<tuple<Ts...>>::value)auto elmnt =get<tuple_size-1>(tpl);returnd_echo(elmnt) +tuple_sum(take_front<tuple_size-1>(tpl));}