if only there was a forward typedef in c++