%module extend_template_ns %inline %{ namespace oss { enum Test {One, Two}; } %} namespace oss { %extend Foo { //************ this doesn't work int test1(int x) { return x; } }; } %extend oss::Foo { //******** this works int test2(int x) { return x; } }; %inline %{ namespace oss { template struct Foo { }; } %} namespace oss { %template(Foo_One) Foo; }