C++ forward declaration doesn't support inner types