Skip to content

Commit

Permalink
Use logarithmic algorithm for generating an index of integers for issue
Browse files Browse the repository at this point in the history
  • Loading branch information
pfultz2 committed Apr 28, 2016
1 parent 5c3768a commit d71d6f0
Showing 1 changed file with 22 additions and 8 deletions.
30 changes: 22 additions & 8 deletions include/fit/detail/seq.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,31 @@ namespace fit {
namespace detail {

template<std::size_t ...>
struct seq {};

template<std::size_t N, std::size_t ...S>
struct gens : gens<N-1, N-1, S...> {};

template<std::size_t ...S>
struct gens<0, S...>
struct seq
{
typedef seq<S...> type;
typedef seq type;
};

template <class, class>
struct merge_seq;

template <size_t... Xs, size_t... Ys>
struct merge_seq<seq<Xs...>, seq<Ys...>>
: seq<Xs..., (sizeof...(Xs)+Ys)...>
{};

template<std::size_t N>
struct gens
: merge_seq<
typename gens<N/2>::type,
typename gens<N - N/2>::type
>
{};

template<> struct gens<0> : seq<> {};
template<> struct gens<1> : seq<0> {};


}
} // namespace fit

Expand Down

0 comments on commit d71d6f0

Please sign in to comment.