Size: a a a

2021 February 26

DP

Denis Paukaev in supapro.cxx
In Dev
Возвращаясь к теме алиасинга.
Я правильно понимаю, что std::launder позволяет обойти UB из примера выше?

int a = 5;
int *p = &a;
double *d = std::launder(reinterpret_cast<double*>(p));


Конечно, если int и double каким-то чудом имеют одинаковый размер
В новом стандарте почти не актуально
источник

CD

Constantine Drozdov in supapro.cxx
Nastya Medveda
Видите ли, проверка на наличие файла в коде будет  в любом случае. Вопрос только будет ли она в основном алгоритме, или в обработчике исключений.
Но я думаю что производить доступ ко внешним ресурсам - файлам, сетевым ресурсам или еще чему нужно только внутри исключений.
Там очень сложная архитектурная вилка. Исключение неявно.
источник

LA

Liber Azerate in supapro.cxx
Сергей
в студии? давно уже есть.
и концепты есть.
Но ренжи недавно есть и только частично всё же. Впрочем, как и полная поддержка концептов
источник

CD

Constantine Drozdov in supapro.cxx
Вряд ли в том же питоне типы исключений выносятся в сигнатуры функций
источник

ID

In Dev in supapro.cxx
Denis Paukaev
В новом стандарте почти не актуально
Вот, кстати, помню недавно это обсуждали в чатике. Можно вкратце, почему?
источник

CD

Constantine Drozdov in supapro.cxx
In Dev
Вот, кстати, помню недавно это обсуждали в чатике. Можно вкратце, почему?
Потому что ослабили требования, которые приводили к необходимости использовать std::launder :)
источник

CD

Constantine Drozdov in supapro.cxx
> Если вы внимательно прочитаете, что такое std::launder, он возвращает адрес объекта по его адресу в памяти
источник

CD

Constantine Drozdov in supapro.cxx
подумайте об этом
источник

CD

Constantine Drozdov in supapro.cxx
в вашем примере нет объекта типа int по этому адресу, std::launder не поможет
источник

ID

In Dev in supapro.cxx
То есть это больше для работы с сырой памятью?
источник

CD

Constantine Drozdov in supapro.cxx
In Dev
То есть это больше для работы с сырой памятью?
std::launder нужен при пересоздании объекта в той же области памяти
источник

CD

Constantine Drozdov in supapro.cxx
например, в реализациях типа std::vector, когда ему push_back структуру с константным полем, потом pop_back и потом снова push_back
источник

Ж

Женя in supapro.cxx
Подскажите, пожалуйста, можно ли используя флаг ios::binary
считывать / записывать данные через потоки << >>
источник

CD

Constantine Drozdov in supapro.cxx
при этом изменяется константной поле
источник

ID

In Dev in supapro.cxx
Constantine Drozdov
std::launder нужен при пересоздании объекта в той же области памяти
Все, дошло
if you allocate a new object in the storage of the old one, you cannot access the new object through pointers to the old
источник

Ж

Женя in supapro.cxx
Женя
Подскажите, пожалуйста, можно ли используя флаг ios::binary
считывать / записывать данные через потоки << >>
Просто, без методов write/read ( хотя флаг ios::binary включен ) у меня в файле текст в обычном виде
источник

CD

Constantine Drozdov in supapro.cxx
In Dev
Все, дошло
if you allocate a new object in the storage of the old one, you cannot access the new object through pointers to the old
Да, и при попытке агрессивно оптимизировать ничего не получили
источник

ID

In Dev in supapro.cxx
Constantine Drozdov
Да, и при попытке агрессивно оптимизировать ничего не получили
И в 20-м были изменения в этих пунктах?
источник

NM

Nastya Medveda in supapro.cxx
Constantine Drozdov
Вряд ли в том же питоне типы исключений выносятся в сигнатуры функций
Там стандартные исключения.
источник

ID

In Dev in supapro.cxx
Nastya Medveda
Там стандартные исключения.
В C++ все исключения тоже как правило наследуются от std::exception
источник