I think C++ allows overloaded functions, one for constant case and another one for operation on m_features. Keep one is enough?