¿Cómo elimino la duplicación de código entre funciones similares const y non-const member?

Digamos que tengo el siguienteclass X donde quiero devolver el acceso a un miembro interno:

class Z
{
    // details
};

class X
{
    std::vector<Z> vecZ;

public:
    Z& Z(size_t index)
    {
        // massive amounts of code for validating index

        Z& ret = vecZ[index];

        // even more code for determining that the Z instance
        // at index is *exactly* the right sort of Z (a process
        // which involves calculating leap years in which
        // religious holidays fall on Tuesdays for
        // the next thousand years or so)

        return ret;
    }
    const Z& Z(size_t index) const
    {
        // identical to non-const X::Z(), except printed in
        // a lighter shade of gray since
        // we're running low on toner by this point
    }
};

Las dos funciones miembroX::Z() yX::Z() const Tener código idéntico dentro de las llaves. Este es un código duplicadoy puede causar problemas de mantenimiento para funciones largas con lógica compleja..

¿Hay alguna manera de evitar esta duplicación de código?

Respuestas a la pregunta(15)

Su respuesta a la pregunta