Boost.Hana  1.5.0
Your standard library for metaprogramming
std::integer_sequence< T, v > Struct Template Reference

Description

template<typename T, T... v>
struct std::integer_sequence< T, v >

Adaptation of std::integer_sequence for Hana.

Modeled concepts

  1. Comparable
    Two std::integer_sequences are equal if and only if they have the same number of elements, and if corresponding elements compare equal. The types of the elements held in both integer_sequences may be different, as long as they can be compared.
    // Copyright Louis Dionne 2013-2017
    // Distributed under the Boost Software License, Version 1.0.
    // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
    #include <utility>
    namespace hana = boost::hana;
    int main() { }
  2. Foldable
    Folding an integer_sequence is equivalent to folding a sequence of std::integral_constants with the corresponding types.
    // Copyright Louis Dionne 2013-2017
    // Distributed under the Boost Software License, Version 1.0.
    // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
    #include <tuple>
    #include <utility>
    namespace hana = boost::hana;
    auto add = [](auto a, auto b, auto c) { return a + b + c; };
    int main() {
    std::tuple<int, long, double> tuple{1, 2l, 3.3};
    // the `i`s are `std::integral_constant<int, ...>`s
    return add(std::get<decltype(i)::value>(tuple)...);
    });
    }
  3. Iterable
    Iterating over an integer_sequence is equivalent to iterating over a sequence of the corresponding std::integral_constants.
    // Copyright Louis Dionne 2013-2017
    // Distributed under the Boost Software License, Version 1.0.
    // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
    #include <type_traits>
    #include <utility>
    namespace hana = boost::hana;
    hana::at_c<2>(indices),
    ));
    int main() { }
  4. Searchable
    Searching through an integer_sequence is equivalent to searching through the corresponding sequence of std::integral_constants.
    // Copyright Louis Dionne 2013-2017
    // Distributed under the Boost Software License, Version 1.0.
    // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
    #include <type_traits>
    #include <utility>
    namespace hana = boost::hana;
    hana::find(xs, hana::int_c<3>),
    ));
    int main() { }