Variables temporales de C ++ en la lista de inicialización

En C ++, hay alguna forma de tener algo como una variable temporal en una lista de inicialización. Quiero inicializar dos miembros constantes con la misma instancia de algo sin tener que pasar ese elemento, eliminar el requisito de const, usar una Fábrica (es decir, pasarlo pero hacer que la fábrica lo genere para ocultarlo del usuario de la API), o tener temp en realidad ser una variable miembro

Es decir. algo como

Class Baz{
    const Foo f;
    const Bar b;
    Baz(Paramaters p):temp(p),f(p,temp),b(p,temp){ //temp is an instance of Something
                                                  // But NOT A member of Baz
    // Whatever
    }
}

en lugar de

Class Baz{
    Foo f;
    Bar b;
    Baz(Paramaters p){
        Something temp(p);
        f = Foo(p,temp)
        b = Bar(p,temp)
    }
}

o

Class Baz{
    Foo f;
    Bar b;
    Baz(Paramaters p,Something s):f(p,s),b(p,s){
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta