%module template_opaque %include "std_vector.i" %{ namespace A { struct OpaqueStruct { int x; }; } enum Hello { hi, hello }; %} %inline { namespace A { struct OpaqueStruct; typedef struct OpaqueStruct OpaqueType; typedef enum Hello Hi; typedef std::vector OpaqueVectorType; typedef std::vector OpaqueVectorEnum; void FillVector(OpaqueVectorType& v) { for (size_t i = 0; i < v.size(); ++i) { v[i] = OpaqueStruct(); } } void FillVector(const OpaqueVectorEnum& v) { } } } %template(OpaqueVectorType) std::vector;