У меня есть такой код
#include <iostream>
#include <string>
int main() {
std::string str{"My short string."};
for (auto& it = str.cbegin(); it != str.cend(); ++it)
std::cout << *it;
return 0;
}
, и я получаю сообщение об ошибке: «начальное значение ссылки на неконстантное должно быть lvalue»
Я хочу использовать auto& it = str.cbegin()
почему я не могу сделать это? Я полагаю, cbegin возвращает объект итератора, и я не хочу его копировать, поэтому я использую & синтаксис.
Не могли бы вы объяснить, как работает cbegin и что он возвращает?