%module abstract_typedef2 /* After the fix for abstract_typedef, this simpler example got broken. */ %inline %{ enum FieldDim { UnaryField, BinaryField }; template struct Facet; template struct Base { virtual ~Base() {} typedef unsigned int size_type; typedef Facet* facet_ptr; // This works // virtual Facet* set(size_type) = 0; // This doesn't virtual facet_ptr set(size_type) = 0; }; template struct Facet { }; template struct A : Base { typedef Base base; typedef typename base::size_type size_type; A(int a = 0) { } Facet* set(size_type) { return 0; } }; %} %template(Base_UF) Base; %template(A_UF) A;