| %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 <iostream> |
| #include <functional> |
| using namespace std; |
| |
| struct B { |
| B(int &val) : val(val) {} |
| std::reference_wrapper<int> 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; |
| } |
| %} |