Instantiation of incomplete type and forward declarations
Summary
This MR fixes an issue showing up in clang related to the instantiation of an incomplete type that is first forward declared and later in the same file implemented.
Closes #171 (closed)