Inicializar variables miembro const

Tengo un código C ++ que se reduce a algo como lo siguiente:

class Foo{
    bool bar;
    bool baz;
    Foo(const void*);
};
Foo::Foo(const void* ptr){
    const struct my_struct* s = complex_method(ptr);
    bar = calculate_bar(s);
    baz = calculate_baz(s);
}

Semánticamente, las variables miembro de barra y baz deben ser constantes, ya que no deben cambiar después de la inicialización. Sin embargo, parece que para hacerlo así, necesitaría inicializarlos en una lista de inicialización en lugar de asignarlos. Para ser claro, entiendopor qué Necesito hacer esto. El problema es que parece que no puedo encontrar ninguna manera de convertir el código en una lista de inicialización sin hacer una de las siguientes cosas indeseables:

Llamadacomplex_method dos veces (sería malo para el rendimiento)Agregue el puntero a la clase Foo (haría que el tamaño de la clase sea innecesariamente grande)

¿Hay alguna forma de hacer constantes las variables evitando estas situaciones indeseables?

Respuestas a la pregunta(4)

Su respuesta a la pregunta