Search code examples
c++c++11constantsreference-wrapper

Constant reference_wrapper


In the following code, the aim is to have a reference_wrapper<int> b such that when a changes, b also changes however, the opposite should not be allowed that is, a should not change when b changes. I tried two ways: Lines 7 and 8. Line 7 caused compiler to complain that it cannot convert from int to const int while line 8 compiled without problem but the result was not what I wanted (a changed when b changed). Any idea?

1.  #include <iostream>
2.  #include <functional>
3.  using namespace std;
4.  
5.  int main() {
6.      int a = 1;
7.      //reference_wrapper<const int> b = ref(a);
8.      //const reference_wrapper<int> b = ref(a);
9.  return 0;
10. }

Solution

  • A constant reference could be retrieved by cref.

    #include <iostream>
    #include <functional>
    using namespace std;
    
    int main() {
        int a = 1;
        reference_wrapper<const int> b = cref(a);
        return 0;
    }