tipo de retorno `auto` en el contexto de los miembros de la clase

¿Cómo se puede usar la deducción automática de tipo para los miembros de la clase? Por ejemplo, el siguiente código

struct A
{
  auto foo(); // foo is defined in another file 
};


int main()
{
  A a;
  a.foo();
}

dóndefoo tiene el tipo de retornoauto da como resultado el siguiente error:

error: function 'foo' with deduced return type cannot be used before it is defined
  a.foo();
    ^

El error es comprensible ya que la compilación no puede saber quéfooEl tipo de retorno es sin conocer su definición.

Mi pregunta es, si hay alguna solución o algún tipo de patrón de programación para sortear el problema de que el tipo de retorno automático no se puede usar para funciones de miembros de clase, en caso de que la declaración y la definición de la función estén separadas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta