// SPDX-FileCopyrightText: The Eigen Authors
// SPDX-License-Identifier: MPL-2.0

#include <Eigen/Core>
#include <iostream>

template <typename Derived>
Eigen::VectorBlock<Derived> segmentFromRange(Eigen::MatrixBase<Derived>& v, int start, int end) {
  return Eigen::VectorBlock<Derived>(v.derived(), start, end - start);
}

template <typename Derived>
const Eigen::VectorBlock<const Derived> segmentFromRange(const Eigen::MatrixBase<Derived>& v, int start, int end) {
  return Eigen::VectorBlock<const Derived>(v.derived(), start, end - start);
}

int main(int, char**) {
  Eigen::Matrix<int, 1, 6> v;
  v << 1, 2, 3, 4, 5, 6;
  std::cout << segmentFromRange(2 * v, 2, 4) << std::endl;  // calls the const version
  segmentFromRange(v, 1, 3) *= 5;                           // calls the non-const version
  std::cout << "Now the vector v is:" << std::endl << v << std::endl;
  return 0;
}
