Pull to refresh
5
0
Георгий @agmt

User

Send message
Как отметили ранее — нужно ощущение что вокруг есть жизнь, чтобы не было чувства заброшенности и упадка в городской среде.

Тоже такое есть. Вероятно, в Америке это компенсируется более высокой общительностью и открытостью людей (гипотеза).
в сабурбии на тихой улочке

Выросши в советской застройке, очень непривычно и тесно на узких улочках. А на открытых просторах с высокими домами ощущаешь комфортно и безопасно (не понятно, почему урбанисты считают, что высокие здания подавляют человека). К тому же, без личного садика/места для bbq не очень понятна прелесть жизни в частном доме (+насекомые из-за 1 этажа).
крутые парки в шаговой доступности

Но моё подсознание всё равно сравнивает с Москвой и не хватает дикого леса у метро.
Спасибо за пояснения.
Краткий вывод: можно использовать type cast только при:
1. приведении к базовому/наследному классу (они существуют);
2. приведении из void*, например, в pthread_create()'s start_routine (объект существует).

Во всех остальных случаях надо использовать placement new/std::start_lifetime_as.
Честно говоря, я не понял что вы сейчас спросили.

Не очень понятно, где проходит граница UB.
struct header_t { uint16_t type; uint8_t mask; };
uint8_t buf[512];

auto r1 = ((header_t*)buf)->mask; // UB
auto r2 = (new(buf) header_t)->mask; // No UB
auto r3 = *(buf + offsetof(header_t, mask)); // No UB?
auto r4 = *((uint16_t*)(buf + offsetof(header_t, type))); // UB?
Стандарт явно разрешает работать с любым объектом как с набором байт

(char[], unsigned char[], signed char[]) или любой фундаментальный тип?
Просто иначе странная ситуация: offsetof() существует, фундаментальный объект существует, а их обоих в сборе — нет.
Upd: вот это имелось в виду?
An operation that begins the lifetime of an array of char, unsigned char, or std::byte implicitly creates objects within the region of storage occupied by the array.


проблемы были лишь при попытке работы с набором байт как с объектом.

А какие проблемы? Компилятор может соптимизировать чтение из char* до и после изменения POD по тому же адресу?
А главное — зачем вводить новую функцию, а не «просто» перенести этот функционал на type cast "(T*)"?
`std::start_lifetime_as` вводит новые концепции?
std::start_lifetime_as actually creates a new object and starts its
lifetime (even if no code runs). On the other hand, std::launder never creates a new object, but
can only be used to obtain a pointer to an object that already exists at the given memory location

Что порождает несколько вопросов:
1. В примерах std::start_lifetime_as используется только для POD. Разве POD — не просто набор байт нужного размера с выравниванием?
2. Что за новая концепция «creates a new object»? И в чём её особенности для POD?
3. Если мы создали новый объект, то как его корректно уничтожить? И как не задеть уничтожение объекта, который тоже там находится (char[])?
4. Надо ли проводить такие же манипуляции для превращения POD/POD's fields в байты (например, при вызове memcpy() при подготовке к отправке по сети)?

Если индексы всё равно нужны, то накладных расходов нет.

Из особенностей: т.к. для контейнера вся структура ключ, то при необходимости модификации "значения" приходится либо помечать неключевые поля как mutable, либо делать const_cast (вопрос: как это делать канонично?). Использовать modify - явно не вариант, т.к. тогда итерирование замедляется в несколько раз.

Смею предположить, это скорее предъява к Gnome3, а не убунте. Авторы KDE/Xfce вполне уважают желание пользователя настраивать.
Программирование не любит неточности. Как говорится: «Одна ошибка и ты ошибся».

Случайно поставил букву в рандомном месте программы? — compilation error

При этом есть бесконечное количество попыток, о которых никто не узнает. А система достаточно воспроизводима.
А есть подсказки, как тренироваться общению с людьми, когда в системе слишком много скрытых состояний и каждая следующая попытка другая?
потому что принимать решение по политическим соображениям с точки зрения жизни и особенно семьи, не очень правильно

Сомнительно. Освоить язык, прокачать софт-/хард-скиллы, открыть бизнес — всё это осуществимо (можно создать план). А вот как добиться политических изменений — не понятно, да и опасно для здоровья.
В Unix-time зафиксировано, что 1 день == 86400 секунд, потому чуть позже, когда появились високосные секунды, появилось требование не считать их (в итоге реальное количество секунд с 1970 на 27 секунд больше, чем возвращается time()).
Если же хочется заиспользовать правильные часы, есть таймзоны `right/*`: www.ucolick.org/~sla/leapsecs/right+gps.html
$ TZ=UTC date; TZ=right/UTC date
Mon Apr 4 16:46:45 UTC 2022
Mon Apr 4 16:46:18 UTC 2022


А в традиционной unix-tz такое невозможно:
$ TZ=right/UTC date -d @1483228826
Sat Dec 31 23:59:60 UTC 2016
контроль и аптек, и сельского хозяйства

А что если антибиотики стали брать, потому что уже нельзя марганцовкой прополоскать горло, которую запретили зачем-то.

Как только у тебя появляется хороший словарный запас, то дальше все становиться проще... Понять, что тебе говорят

Видимо, вам повезло с нейронами (или их развили какой-то особой деятельностью). Часто навыки распознавания на вид и на звучание - разные навыки. И на новый акцент надо снова обучаться (пусть и с использованием обученности на других).

Ещё 1 гипотеза: В "идёт" ударение на ё, соответственно этот слог читается высоким тоном. А в "идиот" только о ударная, что делает тон восходящим.

Учитывая, что мы на тоны не особо обращаем внимание (это эмоциональная инфа, а не грамматическая), то спутать весьма легко.

Благодаря избыточности и существованию правил ща-ши, когда ш всегда читается твёрдой, а щ мягкой, унификация не должна принести неоднозначности. По крайней мере, в московском диалекте, где щ произносится как в японском シ.
Подвижки есть: www.winehq.org/announce/6.0 — модули переводят на PE (судя по описанию, это как раз для anti-cheat), добавляют возможность загружать drivers.
Да и то, что ради Wine в ядро добавили futex2, тоже показывает серьёзность намерений.
Видимо, в этом её прелесть для устного собеседования: код написать (со случайными перемешиваниями) — дело нехитрое, а вот пообсуждать тут есть что.
Если не хочу проверять диапазон и хочу исключение — да.
Иначе: используйте gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html.
Дорогой, медленный, ABI-несовместимый способ, зато без UB.
Ну пометь `// nolint`, статический анализ — штука с ложными срабатываниями, но это не значит, что надо выключать все проверки.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity