Re: VS 2010 реализация auto
От: sraider http://dvinogradov.blogspot.com
Дата: 05.07.10 14:34
Оценка: 1 (1)
А>Начал активно пользоваться C++0x расширениями в VS 2010, и обнаружил неприятность при объявлении
А>переменных с помощью операторы вывода типа auto.

А>class ClassA

А>{
А>public:
А> void fn() {} // НЕ const метод
А>};

А>void funca()

А>{
А> ClassA a;
А> const ClassA& r_a = a; // ссылка на константный объект

А> auto r_a1 = r_a; // по идее, должна быть ссылка на константный объект...

А> r_a1.fn(); // ...ан нет, спокойно компилируется и выполняется

А> ClassA& r_a2 = r_a; // здесь все хорошо — ругается

А> r_a2.fn();

А>}


А>Т.е. оператор auto отметает квалификатор const.


А>Буду признателен, если кто-то укажет, где почитать о такой особенности (если это не бага, конечно).

А>Спасибо.

Все нормально: "auto r_a1 = r_a;" интерпретируется как "ClassA r_a1 = r_a;", и это логично (ты не написал что хочешь ссылку — получи копию). Если хочешь константную ссылку — "const auto &r_a1 = r_a";
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.