Forward declara o typedef público de uma classe em c ++

Estou tentando simplificar um monte de arquivos de cabeçalho "inclua espaguete" usando declarações de encaminhamento e movendo #includes para o arquivo de implementação. No entanto, continuo abordando o seguinte cenário:

//Foo.h
#include "Bar.h"

class Foo
{
public:
  void someMethod(Bar::someType_t &val);
};

//Bar.h
.
.
.
class Bar
{
public:
  typedef std::vector<SomeClass> someType_t;
};

Quero remover #include "Bar.h" no maior número possível de casos. Também vejo a situação em que o typedef em Bar.h está listado fora da classe Bar. Suponho que ambas as situações possam ser tratadas da mesma maneir

Alguma ideia

questionAnswers(2)

yourAnswerToTheQuestion