170 похожих чатов

*Beg это значение элемента, на который указывает итератор, верно? Но

все же Decltype(*beg) почему-то возвращает ссылку

21 ответов

25 просмотров

Потому что оператор разименования возвращает ссылку, если тебе нужно значение используй std::remove_reference, возможно, даже std::remove_cv_ref

Ilya- Автор вопроса
disba1ancer
Потому что оператор разименования возвращает ссылк...

Во! этот вопрос как раз. Почему он на значение возвращает ссылку?

Ilya
Во! этот вопрос как раз. Почему он на значение воз...

Потому что так в итераторе объявлено, нет?

Ilya- Автор вопроса
disba1ancer
Потому что так в итераторе объявлено, нет?

тогда что он вернет если написать decltype(beg)?

Ilya
Во! этот вопрос как раз. Почему он на значение воз...

Ещё как вариант можешь убрать тип возврата и оставить только auto, возможно, даст нужный эффект, но это не точно

Ilya- Автор вопроса
disba1ancer
Ещё как вариант можешь убрать тип возврата и остав...

в книжке какая-то странная конструкция была, что-то типа ??? вместо auto, я прифигел

Ilya
тогда что он вернет если написать decltype(beg)?

Вернёт сам итератор, он же по значению принимается

Ilya- Автор вопроса
disba1ancer
Вернёт сам итератор, он же по значению принимается

то есть decltype(*beg) вернет ссылку, а decltype(beg) вернет итератор?

Ilya- Автор вопроса
disba1ancer
Да

а это разве в данном контексте не одно и то же? Если ф-я возвращает ссылку - она возвращает указатель на память, также как и итератор

Ilya
то есть decltype(*beg) вернет ссылку, а decltype(b...

Дело в том что конструкция *beg возвращает не значение, а ссылку на значение, это посволяет меньше копировать, да и от контейнеров часто ожидается, что модификация объекта полученного через итератор, модифицирует объект внутри контейнера

Ilya- Автор вопроса
disba1ancer
Дело в том что конструкция *beg возвращает не знач...

то есть rvalue reference? Если она возвращает ссылку на значение, то после завершения работы ф-ии, ссылка сотрется и результат непредсказуем, разве нет?

Ilya
а это разве в данном контексте не одно и то же? Ес...

Это немного разные сущности с разным поведением, хоть и могут быть похожи на низком уровне

Ilya- Автор вопроса
disba1ancer
Это немного разные сущности с разным поведением, х...

имеется ввиду если ф-я возвращает указатель или ссылку, какая разница то?

Ilya
то есть rvalue reference? Если она возвращает ссыл...

Итераторы возвращают lvalue reference, я же говорил, что объект полученный через итератор должен быть объектом из контейнера, а не его копией

Ilya- Автор вопроса
Ilya
имеется ввиду если ф-я возвращает указатель или сс...

Указатели надо ещё разыменовать, они могут быть нулевыми, и может ещё чего есть...

Ilya- Автор вопроса
disba1ancer
Указатели надо ещё разыменовать, они могут быть ну...

но при этом ты ведь не присвоишь результат работы функции, которая возвращает ссылку НЕ указателю

Ilya
но при этом ты ведь не присвоишь результат работы ...

Результат работы функции которая возвращает ссылку, можно использовать там где допустимо использовать сам объект

Ilya
но при этом ты ведь не присвоишь результат работы ...

Посмотри iterator_traits. Это то что тебе нужно

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта