Константа reference_wrapper

В следующем коде цель состоит в том, чтобы reference_wrapper<int> b так что когда a изменения, b также меняется, однако, нельзя допустить обратное, то есть a не должно меняться, когда b изменения. Я попробовал два способа: строки 7 и 8. Строка 7 вызвала компилятор жаловаться, что он не может преобразовать из int в const int в то время как строка 8 скомпилирована без проблем, но результат оказался не тем, что я хотел (a изменилось, когда b изменено). Любая идея?

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. }

1 ответ

Решение

Постоянная ссылка может быть получена cref,

#include <iostream>
#include <functional>
using namespace std;

int main() {
    int a = 1;
    reference_wrapper<const int> b = cref(a);
    return 0;
}
Другие вопросы по тегам