¿Existe una diferencia (semántica) entre el valor de retorno de la ubicación nueva y el valor emitido de su operando?

¿Existe una diferencia (semántica) entre el valor de retorno de la ubicación nueva y el valor emitido de su operando?

struct Foo { ... };
char buffer[...];

Foo *a = new(buffer) Foo;
Foo *b = reinterpret_cast<Foo *>(buffer);

Hacea&nbsp;yb&nbsp;difieren de alguna manera?

EDITAR: Basado en el comentario de DaBler, esta pregunta dice que hay una diferencia, si los miembros const / reference usan:Colocación nueva y asignación de clase con miembro constante

Entonces, mi pregunta un poco actualizada: ¿a&nbsp;yb&nbsp;diferir de alguna manera, siFoo&nbsp;no tiene miembros constantes o de referencia?