%module cpp11_reference_wrapper // SWIG could provide some sort of typemaps for reference_wrapper which is acts like a C++ reference, // but is copy-constructible and copy-assignable %inline %{ #include #include using namespace std; struct B { B(int &val) : val(val) {} std::reference_wrapper val; // int &val; }; %} %inline %{ void go() { int val(999); B b1(val); int const& aa1 = b1.val; cout << aa1 << endl; // copy constructible B b2(b1); int const& aa2 = b2.val; cout << aa2 << endl; // copy assignable B b3(val); b3 = b1; int const& aa3 = b3.val; cout << aa3 << endl; } %}