18struct QuadraticDistanceCostTpl : QuadraticResidualCostTpl<_Scalar> {
 
   19  using Scalar = _Scalar;
 
   23  using Base = QuadraticResidualCostTpl<Scalar>;
 
   27  QuadraticDistanceCostTpl(
const polymorphic<Manifold> &space,
 
   28                           const ConstVectorRef &target,
 
   29                           const ConstMatrixRef &weights)
 
   30      : Base(std::make_shared<StateResidual>(space, target), weights) {}
 
   32  QuadraticDistanceCostTpl(
const polymorphic<Manifold> &space,
 
   33                           const ConstVectorRef &target)
 
   34      : QuadraticDistanceCostTpl(
 
   35            space, target, MatrixXs::Identity(space->ndx(), space->ndx())) {}
 
   37  QuadraticDistanceCostTpl(
const polymorphic<Manifold> &space)
 
   38      : QuadraticDistanceCostTpl(space, space->neutral()) {}
 
   40  ConstVectorRef getTarget()
 const {
 
   41    return static_cast<StateResidual *
>(
residual_.get())->target_;
 
   44  void updateTarget(
const ConstVectorRef &x) {
 
   45    static_cast<StateResidual *
>(
residual_.get())->target_ = x;