Far as I understand, incomplete type error happens when there\'s forward declaration without full specification of type, then instantiate that type since the compiler can\'t tel