%module cpp11_shared_ptr_const %{ #include #include class Foo { int m; public: Foo(int i) : m(i) {} int get_m() { return m;} }; std::shared_ptr foo(Foo v) { return std::shared_ptr(new Foo(v)); } std::shared_ptr const_foo(Foo v) { return std::shared_ptr(new Foo(v)); } std::vector > foo_vec(Foo v) { std::vector > result; result.push_back( std::shared_ptr(new Foo(v)) ); return result; } std::vector > const_foo_vec(Foo v) { std::vector > result; result.push_back( std::shared_ptr(new Foo(v)) ); return result; } %} %include %include %shared_ptr(Foo); %template (FooVector) std::vector >; %template (FooConstVector) std::vector >; class Foo { int m; public: Foo(int i); int get_m(); }; std::shared_ptr foo(Foo v); std::shared_ptr const_foo(Foo v); std::vector > foo_vec(Foo v) const; std::vector > const_foo_vec(Foo v) const;