Я думаю, что ничего clang не оборачивал, просто сыграл рандом — какие объекты как легли в память. Поэтому случайно получилось, что в GCC побились адреса, занятые ценными объектами, на обращении к которым упало, а в clang этот адрес пришелся на неиспользуемую область (это если ошибка записи по неправильному адресу).
У вас возражение к высказыванию в этом комментарии, или к выбору темы для комментирования?
ИМХО, в первую очередь нужно жаловаться на упавший уровень самих публикаций. Вряд ли эта новостная заметка в один абзац может спровоцировать глубокую техническую дискуссию.
Если бы мне 10 лет назад сказали, что на Марсе будет летать вертолет на солнечной батарейке, а марсоход будет снимать его на видео со звуком, я бы не поверил по целому набору причин.
В 2011? Я бы поверил :) Расскажите, пожалуйста, про этот ряд причин.
Как я это понимаю: любой именованый объект становится lvalue. Даже если это аргумент функции void f(T&& v), когда вы внутри функции будете обращаться к v — в контексте этой функции у него уже есть имя и это уже не rvalue, хоть он и был объявлен как rvalue reference (&&). Это нужно, например, потому, что вы можете захотеть вызвать с ним несколько функций:
Если бы символ v имел категорию rvalue, а функция process имела бы перегрузку для rvalue, то она могла бы «сломать» этот объект (переместив его содержимое в другое место, для чего, собственно, мы и хотим делать такие перегрузки — для оптимизации). Поэтому v — это lvalue, а чтобы передать этот объект дальше именно как rvalue, нужно опять «потерять» его имя, для чего и нужен std::move.
Garbage in — garbage out. clang видит, что вы написали глупость и этот код не может выполнять никакую полезную функцию, а вернуть что-то из функции всё равно нужно. Поэтому он смело возвращает первую попавшуюся констатнту типа int. Логично, что на эту роль выбран 0. А стандарт это разрешает с очень важной целью — это открывает простор для оптимизаций. Не конкретно в этом примере, а в корректных программах на С++, конечно. К которым ваш пример не относится.
Действительно, с прямым углом перепутал. Был уверен, что «испанский грипп» — вообще не грипп, но нет, это действительно H1N1. Но он тоже вызывает цитокиновый шторм.
Я не давал советы по улучшению безопасности, а только по улучшению user experience на старом железе или просто медленном HDD. Фоновые обновления и проверки всего подряд антивирусом слишком сильно замедляют работу. А что это плохо для безопасности — очевидный минус, не спорю.
Это какой производитель, Huawei, что ли, который перессорился с цивилизованным миром после того, как натырил чужих технологий и отказался платить лицензионные отчисления? Я теперь из принципа в своих приложениях этого вендора поддерживать не буду.
Я тоже всегда считал (почему - не знаю), что булат - это славянский аналог дамасской стали. Ещё, вроде, японцы аналогичную технологию ковки пакетов разнородных сортов стали применяли для клинков.
А почему он может не заряжаться или плохо заряжаться в такой ситуации? Я понимаю, что АКБ не будет заряжен генератором до 100% своей возможной ёмкости, но в чем разница между зарядом на автомобиле (генератором) с напряжения 12.5 и 12.4?
Ну частота у 8266 повыше, памяти 80 КБ.
Проще всего на ESP32, там что-то около 320 КБ ОЗУ и аппаратный FPU. У запроса «ESP32 Doom» много результатов, для 8266 почти нет. Выглядит как челлендж для фанатов 8266 :)
А что с производительностью, какие-то бенчмарки выполнялисьс дефолтным и самосборным ядрами? Интересно, есть ли какое-то ускорение работы от перехода на clang.
ИМХО, в первую очередь нужно жаловаться на упавший уровень самих публикаций. Вряд ли эта новостная заметка в один абзац может спровоцировать глубокую техническую дискуссию.
Если бы символ v имел категорию rvalue, а функция process имела бы перегрузку для rvalue, то она могла бы «сломать» этот объект (переместив его содержимое в другое место, для чего, собственно, мы и хотим делать такие перегрузки — для оптимизации). Поэтому v — это lvalue, а чтобы передать этот объект дальше именно как rvalue, нужно опять «потерять» его имя, для чего и нужен std::move.
И это тоже был коронавирус, кстати.Ошибся, ниже поправили, испанский грипп всё-таки был гриппом.
Я тоже всегда считал (почему - не знаю), что булат - это славянский аналог дамасской стали. Ещё, вроде, японцы аналогичную технологию ковки пакетов разнородных сортов стали применяли для клинков.
А почему он может не заряжаться или плохо заряжаться в такой ситуации? Я понимаю, что АКБ не будет заряжен генератором до 100% своей возможной ёмкости, но в чем разница между зарядом на автомобиле (генератором) с напряжения 12.5 и 12.4?
Проще всего на ESP32, там что-то около 320 КБ ОЗУ и аппаратный FPU. У запроса «ESP32 Doom» много результатов, для 8266 почти нет. Выглядит как челлендж для фанатов 8266 :)