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

Гайз, ку Объясните, какого фига подобное является корректным в работе?))) Это

же UB получается?

struct S {
int x = 1;
int &r = x;

void f(int y) const {
r = y;
}

};

int main() {
S s;
s.f(2);
std::cout << s.x; // -> 2

return 0;
}

27 ответов

33 просмотра

Не уб, потому что S не декларирована как константная

Аа.. Табуляция

Ну это уб

Stepan-Zorin Автор вопроса

при попадании в константный метод поведение эквивалентно константному объекту

Stepan Zorin
при попадании в константный метод поведение эквива...

Нет, что посетили константным, то и является

Stepan-Zorin Автор вопроса
Kelbon
Ссылка меняется? Нет. Значит корректно

так само поле в константном методе является константным на момент обращения

Stepan Zorin
так само поле в константном методе является конста...

На момент обращения язык и компилятор уже ничего не знают о том куда указывает ссылка

Stepan-Zorin Автор вопроса
Kelbon
На момент обращения язык и компилятор уже ничего н...

окей, я изменил на const, но вопрос тот же

Stepan-Zorin Автор вопроса
Kelbon
Ну это уб

получается УБ, да?

Stepan-Zorin Автор вопроса
Kelbon
https://t.me/ProCxx/600058

я исправил на const. Что в таком случае?

Stepan Zorin
получается УБ, да?

Если константа, то уб, проверить элементарно, добавить constexpr

Stepan-Zorin Автор вопроса
Kelbon
Если константа, то уб, проверить элементарно, доба...

Да, с constexpr всё и в правду ломается. Спасибо

GNU/Линуксяша-libre
Аа.. Табуляция

осуждать табы по 4, мда

λ🇦🇲
осуждать табы по 4, мда

У тебя 4, у кого-то 8 или 2

https://eao197.blogspot.com/2023/08/progc-nrvorvo-ub.html?m=1 Есть еще вот такой занятный ногострел из этой же серии.

Ага, mutable не нужен...

Sergey S
https://eao197.blogspot.com/2023/08/progc-nrvorvo-...

Это любопытное и скорее всего заслуживает репорта: кажется, что сейчас нет однозначности относительно того, какой тип у объекта в этом случае в части cv-квалификаторов, поскольку NRVO позволяет элиасинг сквозь них и не указывается, тип какого из конфликтующих определений брать для итогового объекта, если не ошибаюсь.

λ🇦🇲
осуждать табы по 4, мда

Там табов вообще не было, лол

Michael
У тебя 4, у кого-то 8 или 2

да, и теперь это нужно осуждать

Это точно UB? clang-tidy не ругается, PVS-Studio не ругается, Sonar не ругается, если добавить constexpr к f — ничего не падает, всё работает так же хорошо

Eoan Ermine
Это точно UB? clang-tidy не ругается, PVS-Studio н...

Там, кстати, функцию можно убрать и сделать просто s.r = 2;

https://godbolt.org/z/PbcG5c9o4

Denis
https://godbolt.org/z/PbcG5c9o4

А это точно говорит об UB? Мне кажется, это не является constant expression не из-за того, что это UB, а из-за [expr.const#5.16] 5. An expression E is a core constant expression unless the evaluation of E, following the rules of the abstract machine ([intro.execution]), would evaluate one of the following:... 5.16 a modification of an object ([expr.ass], [expr.post.incr], [expr.pre.incr]) unless it is applied to a non-volatile lvalue of literal type that refers to a non-volatile object whose lifetime began within the evaluation of E;

Eoan Ermine
Это точно UB? clang-tidy не ругается, PVS-Studio н...

Изменение константного объекта — это ub. В твоём примере нет ub, потому что нет изменения константного объекта. static member не связан ни с одним из экземпляров и их константностью.

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

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

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Народ, кто шарит в расширенных разделах (EBR/EPR) на дисках с разметками MBR? Везде пишут (в вики рус/англ) в частности + другие источники смотрел, что первый сектор расширенн...
Eugene Krasnikov (ᴊɪɴ x)
1
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта