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

class MyVectorType : public Eigen::VectorXd {
 public:
  MyVectorType(void) : Eigen::VectorXd() {}

  // This constructor allows you to construct MyVectorType from Eigen expressions
  template <typename OtherDerived>
  MyVectorType(const Eigen::MatrixBase<OtherDerived>& other) : Eigen::VectorXd(other) {}

  // This method allows you to assign Eigen expressions to MyVectorType
  template <typename OtherDerived>
  MyVectorType& operator=(const Eigen::MatrixBase<OtherDerived>& other) {
    this->Eigen::VectorXd::operator=(other);
    return *this;
  }
};

int main() {
  MyVectorType v = MyVectorType::Ones(4);
  v(2) += 10;
  v = 2 * v;
  std::cout << v.transpose() << std::endl;
}