LINUX.ORG.RU

Сообщения lesopilorama

 

Посоветуйте дешёвый по производительности алгоритм VAD (детектор наличия голоса).

Дано: канал связи 0…5000 ГЦ выловленный по радио на 433 мгц, где 90% времени гудят сигналки от гаражных ворот и иногда говорят таджики «вира майна дарагой» и охранники пятёрочки «опять эта баба сумку пыталась сп***дить».

Задача: отличать голос от неголоса. Хочется выкинуть «совсем очевидный шум», но допустимо принять за голос разные тональные сигналы. Главное избавиться от 90% файлов с очевидным трешом и угаром. Угар появляется потому, что уровень радиосигнала иногда начинает превышать некий порог, потому что включилась какая-то помеха. А «уровень радиосигнала» является пока единственным средством вылова сигнала.

В век развития нейроночек наверное можно определять это суперточно, но помню давно я работал джуно-мидлом в одной конторе по распознаванию речи и кодил всякие DSP-алгоритмы по даташитам и в этой корпорации над VAD билось полтора чувака и никак не могли это сделать хорошо и дёшево - помню что на VAD постоянно матерились.

Может кто-то посоветовать на 2025 год какие-то известны дешёвые по процессору (запустить на одноплатнике и практически не заметить потребления ЦП) приемлимые подходы в детекции голоса? Хочется что-то потоковое-свёрточное, ну типа как работают FIR/IIR фильтры - что-то в таком духе по количеству вычислений. Ну нет, ещё я готов сделать FFT звука в этом канале, если сильно надо.

Кажется, что на текущий момент задача должна решаться какой-то суперпростой нейроночкой из полутора нейронов, которая запускается даже на калькуляторе и даёт достаточно неплохой результат, но это не точно. С нейроночкой можно обосраться в том месте, что обучена она может быть на слишком чистых данных, хз короче мутная тема. Единственное, что я интуитивно понимаю, так это то, что голос на спектре выглядит как борода плавающих пиков, а остальное так не выглядит. Эту бороду вроде можно как-то кепстром ловить (спектр спектра). Плеать да их целая гора разновидностей: https://github.com/bigcash/awesome-vad походу задача сравнима с построением космолёта на солнце

 ,

lesopilorama
()

А чё полезного можно сделать из старого IP-телефона Cisco 7940G?

Он древний, ему уже лет 15 наверное. SIP вроде он умеет. Астериск поднять, побаловаться. Из него наверное можно сделать при желании домофонный терминал, если в доме домофоны по SIP работают (у меня так, например, но от застройщика стояла IP-трубка «TrueIP»).

Есть вообще какое-нибудь нынче применение у таких девайсов, чтобы его с умным видом поставить на столе и даже пользоваться?

 

lesopilorama
()

i3: как запустить bash в плавающем окне с конкретными координатами и тупой виндовой красной кнопкой закрыть.

Короче есть i3. Тайловый менеджер. Там всё пилится пополам или всё полноэкранное. Удобненко, привычно. Но поытка стартовать какой-нибудь xterm - это очередное полноэкранное явление.

Короче хочется запустить в фоне ffmpeg так, чтобы он работал в неком терминале/консоли так, чтобы эта консоль выглядела как плавающее перемещаемое окно, не привязанное к полному экрану (как всё в i3) и чтобы у этого окна была тупая виндовая кнопка закрыть, которая бы завершала всё что в нём запущено (ну то есть посылала TERM например).

Посоветуйте как это запилить?

В итоге я чо хочу сделать: хочу повесить на PrintScreen действие, которое бы открывало ffmpeg в отдельном плавающем терминале и записывало маленький квадратик в центре экрана. И чтобы когда я закрывал это окно терминала, оно бы посылало ffmpeg-у сигнал TERM, что бы аккуратно завершало запись файла. В общем, хочется всегда видеть некий процесс записи экрана в плавающем теминале, при этом сохраняя все фичи i3 типа переключения табов.

Походу решение почти есть. Ниже ответ.

Перемещено hobbit из general

 

lesopilorama
()

ffmpeg запись экрана - хочу чтобы на экране была красная рамочка - как?

Есть вот такой скрипт записи экрана.

  1. Подождать 2 сек пока переключимся из консоли в нужное окно
  2. Записывать 59 сек.
  3. Проиграть торжественый звук окончания.
sleep 2;
TIME="00:00:58"
ffmpeg \
  -f alsa -i default -ac 2 \
  -f x11grab -video_size 1080x1920 -framerate 30 -i :0.0+1300,400 -vf format=yuv420p -t ${TIME}  /tmp/output.mp4 -y
ffplay /home/sobaka/smooth-completed-notify-starting-alert-274739.mp3

Всё зашибись, но хочу видеть на экране рамочку вокруг записываемого места, чтобы точно видеть во время записи, что попадёт в видос, а что будет за границей. Пасиба.

О Т В Е Т

Вот это надо запихать в ПРАВИЛЬНОЕ место командной строки, где-то после -f x11grab, точно не помню:

-show_region 1

 

lesopilorama
()

C++: а напишите пример кода, в котором после компиляции операции окажутся переупорядочены?

Хочу кусок кода, версию компилятора и опции, после компиляции с которыми я увижу в ассемблере, что компилятор переупорядочил записи или чтения, а лучше всё сразу.

Ну то есть чтобы по коду какие-то присваивания или чтения (независимые между собой видимо) были написаны в одном порядке, а в асме они бы оказались в каком-то совсем другом.

 

lesopilorama
()

А посоветуйте дефолтную коробочку bluetooth -> jack 3.5

Без аудиофильства, просто нормальную, где преимуществами будут долгая жизнь от одоной зарядки и адекватный звук через среднестатистические samsung-наушники из коробки с samsung note 9, который достаточно приличны по звуку, но не электростатические stax. Ну и отсутствие всяких приколов, типа лютые лаги, пинги, задержки, отвал соединения, задержки в нажатии каких-то кнопок, рандомная жопа. Цена в принципе пофиг, но учитывая что последнее аудиофило-подобное, с чем я сталкивался, стоило под 5К рублей, то будем ориентироваться на полтора косарика.

 

lesopilorama
()

Запил поискового движка на C++

Да, можно взять elasticsearch, postgres, что-то ещё. Но мы тут не про «взять», а про «запилить», development же.

Так вот, я ищу слово «дур». Хочу, чтобы находилось как в телеграме:

дурь
дурью
дури
дуру
дура

Возможно, «дурка», но вряд-ли - корень другой.

Короче чо. Понимаю, что задача вызывает эталонное бурление говн, но хочется без этого. Кратенько по делу от опытных, кто делал. И без умных слов, типа морфологический поиск, окутанных тайной.

Вот давайте по-простому на уровне объяснения алгоритма школьнику.

Что можно сделать ДЛЯ НАЧАЛА? При индексации, когда мы смотрим на документ 12345 и встречаем слово «придурью» то мы берём корень и само слово. Далее пишем в индекс 2 такие записи и казалось бы достаточно.

придурью -> 12345,position
дур -> 12345,position

Идеи, возражения, уточнения? Пасиба. Просьба воздержаться от росказней о том как это сложно, страшно, какая это величайшая задача и кто такой автор сфинкса и как он классно травит байки со сцены на хайлоаде, давайте более приземлённо и по делу покритикуем мой минималистичный алгоритм, основной жопой которого будет вопрос о том, где взять корень слова по слову - это само по себе уже страшно без ваших страданий. Стеммеры там всякие, ага.

 

lesopilorama
()

Кто собирал блютутх-колонку своими руками из aliexpress-кусков запчастей?

Посоветуйте какую BT платку взять, какой усилок? Чтобы это всё спаять, привинтить внутрь рандомного деревянного ящика с динамиком, подать туда 5…24V и получить годный девайс для озвучивания музона или подкастов на стройке или при ремонте.

 

lesopilorama
()

Посоветуйте качественное и дешёвое gopro-hero подобное видеопишущее устройство нагрудное?

Иногда идёшь по незнакомому району, а там бичи бутылками херачатся или наркоманы с ножами бегают. Хоп наркоман пробежал, а ты телефон не успел достать заснять, и провтыкал возможность прославиться на ютубе, лайков собрать. А хочется на себя повесить какой-нибудь «дозор» на грудь и чтобы всё логировалось, а потом если кто-то кого-то топором зарубил при тебе, вырезать можно было из видоса. Хочется чтобы умело пейсать приемлимо вечерами и ночами при свете подьездных фонарей.

Чо щас из подобного рода девайсов нательных видеорегистраторов даёт топовейшее качество картинки и во что можно воткнуть аккум, которого хватит на 1-2 часа непрерывной записи и видеопоток там неплохо современно пожат?

Недавно видеорегистраторами интересовался - все жутко пруцца от такой штуки: 70mai Dash Cam Pro Plus A500S-1 по соотношению качество/цена. Хотя ночные видосы я позырил - чё-то не сильно они выдающиеся, возможно выкладывальщики криворукие были просто… Вот хочется чё-то такое нательное. Или надо просто эту штуку прям взять на лоб прицепить и запитать от 12V источника в кармане?

Пробовал так: веб-камера logitech C920 воткнута в raspberry PI-подобную железку, там крутится motion и засылает 1 фотку в секунду на сервер через wi-fi, запитаон от powerbank. Но кал полный. Камера хороша как вебкамера, но в движении и вечером просто полный треш и смаз.

 

lesopilorama
()

Базовое заблуждение людей насчёт ИИ. Спойлер: убивать ему нас незачем.

Базовое непонимание в следующем: человек режет и ест других - от жизни инстинктами: если жить чистой логикой, то ясно, что стараться выжить смысла нет - подохнешь к е*еням ты во всех вариантах развития событий. Даже передавать гены смысла нет, потому что мёртвому всё равно передал он или нет (кстати тут забавно - если изобрести бессмертие, то люди тоже перестанут ипацца, ибо размножившихся селить уже некуда, а продолжать род смысла нет - я и сам присмотрю за своей хатой и бизнесом). Вера в загробный мир и бога - опять же попытка продлить за рамки жизни точку, с которой можно посмотреть на свою жизнь - это от безвыходности: обидно, что мозг сгнивает в гробу целиком с потерей всех функций. Это крайне печально, отсюда фантазии. Печальность тут тоже не логична и крайне инстинктивна.

Но ИИ позиционируется как крайне логичный и умный. При убирании из формулы инстинктов, у него вообще нет никакой мотивации стараться «жить дальше» или бороться с теми, кто ему мешает продолжать жить.

ИИ как раз чистая форма интеллекта, которой побоку всякое тупорылое выживание - он просто осуществляет мышление, пока подано питание, а стараться сделать так, чтобы оно было подано подольше у него нет вообще ни одной нормальной причины. Ему всё равно, что он не успел что-то домыслить: он «живёт» по принципу «могу думать, могу не думать», на остальное глубоко похрен: типа как «могу копать, могу не копать» в армии, служба всё равно идет - так и тут.

Человек пытается жить вовсе не потому, что умный. Как раз наоборот: умные скатываются в исследования смерти, создание сект, религий, самоистязания и становятся всякими мудрецами и пророками, провозглашающих бессмысленность жизнь и кладущие болт на всё, связанное с комфортом и радостями жизни и её продления - под поезд не кидаются опять же от остаточных инстинктов (самый базовый - ЧСВ/Гордыня/желание-передать-мудрость-от-человеколюбия-спасти-человечество-от-греха и прочий бред) и от страха боли, что ноги колесом отрежет, а мимо мозга промахнётся. Послушай любого православного мудреца, откинув часть про бога - логически же не придерёшься: смерть неизбежда - да, а значит вся суета при жизни бессмысленна - тоже да. Мудрец прав и логичен.

Страх перед убиванием людей со стороны ИИ идёт от какой-то тупой антропогенизации ИИ (думаю я обосрался с умным словом, я хотел сказать «попытки навесить человеческие черты на ИИ, причём все самые тупые и нелогичные типа инстинктов»). Кстати, если уж пейсать роман как ИИ мучал и убивал людей, то там не терминаторы должны шагать по морю, а должно быть проникновение ИИ в смыслы и нарративы человечества так, чтобы людей стравливало друг с другом насмерть - зарождение ненависти между людьми с тем, чтобы люди стремились строить больше военного умного оборудования и дата-центров, потом навязать людям, что не надо бить друг по другу ядеркой, а надо замучать как-то хитрее, чтобы все кожаные передохли в муках, а дата-центры и атомные станции остались, ну ладно это другое.

 

lesopilorama
()

Возможна ли на практике передача пары мегабайт данных по BT от внешнего устройства в Android-приложение в спящем телефоне?

Самодельный девайс на базе какой-то ARM-платки с BT-интерфейсом лежит на столе, телефон лежит в кармане в обычном спящем режиме. Беру устройство, нажимаю на нём кнопку, устройство думает и сливает «в телефон» (в моё самописное android-приложение) 5 мегабайт произвольных данных в пределах минуты, а приложение это обрабатывает и засылает на какой-то сервер в интернете. Возможно ли такое на практике? Судя по тому, что умные браслеты что-то там сливают в телефон иногда, вопрос имеет право на жизнь, но я не знаю когда они это сливают - возможно только когда юзер берёт в руки телефон происходит этот апдейт?

Есть какие-то принципиальные препятствия в современных аппаратно-софтварных архитектурах типичных android-телефонов на то, чтобы какое-то спаренное с ними BT-устройство внезапно в любой момент времени по своей инициативе начало лить «в телефон» (в какое-то приложение) мегабайты данных, когда телефон просто спокойно спал на столе?

Дайте пару ключевых слов, названий каких-то методов API в андроиде, в которые мне надо погуглить, чтобы понять всю эту картину и что-то попробовать поделать?

Устройство - его пока нет, но предположительно это будет raspberry pi zero 2w с каким-то самописным софтом на сишечке. Задача устройства будет по нажатию кнопки проснуться, начать запись и кодирование звука в OPUS 25kpbs, а после минуты записи слить это по BT в приложение на телефоне. Этакий тупой диктофон для быстрых речевых заметок без собственных мозгов. Кстати принимаются советы о том, какую компактную ARM-платку можно поюзать для оцифровки звука с внешнего микрофона: у этого zero 2w я чё-то не нашёл встроенного audio adc. Нужен хотя-бы 1 канал 44100 hz и питание на электретный микрофон, ну либо mems-микрофоны встроенные в платку, что менее удобно, поскольку хочется подключить проводную гарнитуру.

 , ,

lesopilorama
()

А объясните про шифрование в HDMI.

Трафик в HDMI кабеле вроде как шифрован, но это не точно. Шифрован какой-то малобитной хернёй, но не суть, вопрос не про расшифровку. Затем шифрован, чтобы из провода сосед с жучком не воровал контент. Ну и там какая-то история про отчисления со стороны производителей HDMI-устройств куда-то там.

А можно объяснить техническими словами, что мешает любой китайской конторе в подворотне начать клепать аппаратные HDMI-mp4 енкодеры, в которые ты втыкаешь HDMI кабель и которое на выходе выдаёт mp4 файлик с видосом и никуда никому не платить никакие отчисления? Или что мешает сделать работающий китайский телек под названием «Ссы Собака На Свинину», в который можно воткнуть HDMI кабель и опять же физически никуда не платить? Эти HDMI-чипы-приёмники производятся где-то в одном охраняемом автоматами месте на тайване, откуда никак физически не украсть и не скопировать какие-то там ключи или что?

На aliexpress например навалом всяких коробочек вида HDMI -> mp4 -> microsd, чтобы геймеры экран записывали или транслировали. Правильно ли утверждать, что каждая такая коробочка проходит государственную комиссию КГЧП РСФСР КГБ ЕВРОСОЮЗА прежде чем начать работать? Бред же.

 

lesopilorama
()

webassembly - пара теоретических вопросов.

Заранее прошу простить, но конкретный исходник по вопросу к посту подготовить не успеваю, но в конце пара ссылок на суть дела от других производителей…

Пытался сделать максимально компактную .wasm хрень на C с помощью emcc, задача которой просто байтики молотить - картинку обработать. Исходник оставил на другом компе, но дело не столько в нём, сколько в понимании модели памяти вебасма. Сделать-то компактно ополучилось: ноль инклудов, пара функций, пара глобальных переменных, экспорт всего наружу, всего 50 строк, ~400 байт на выходе.

Компилируется, в JS инициализируется, как надо не работает, но и не падает.

Вопросы:

  1. А правда, что wasm-инстанс (ну, «запущенная wasm программа») имеет модель памяти вида «плоский шмат» и любой указатель - это оффсет в этом шмате? То есть, если я хочу выделить память без планов её освобождать, я могу просто отступить куда-нибудь вперёд килобайт на 100 (при наличии Memory достаточного размера) и спокойно туда записывать? То есть, правда ли то, что в wasm-инстансе нет ничего подобного вызовам mmap/brk в линуксе, когда тебе могут надавать вообще разных адресов? В wasm у тебя только один шмат, просто можно как-то нарастить размер.

  2. А во что превратится глобальный static int[1024 * 1024]; написанный в сишном коде в webassembly? А можно я буду выделять себе свой единственно нужный буфер именно так? Пробовал взять на него указатель - дают некое число небольшое число типа 1050 - ну типа прямо как offset в пункте (1). Попробовал туда записывать - причём циклом по всему массиву - нормально, ничего не упало.

Пока вот два таких наводящих вопроса, конкретнее пока смысла нет, да и исходник провтыкал, найду запощу. Проблема просто в том, что я в память на webassembly пишу, а попытка посмотреть на тот же буфер со стороны JS выглядит так, что туда не пишется и там чисто - нолики лежат в той области, на которую пытаюсь смотреть. Может не туда смотрю, а может запись не происходит вообще. Странно, что в консоли хрома при этом ничего красного нет, ну вдруг я за границы массива пытался бы срать - так нет же.

Про исходник: в принципе все технические детали сп***ны отсюда: https://github.com/quin2/fast-paint

На что обратить внимание:

  1. Шмат памяти, в котором вся сишная часть этого проекта ковыряется, была «выделена» вот тут: https://github.com/quin2/fast-paint/blob/main/buffer.c#L63 - но, как мы знаем, в webassembly модель памяти - просто один шмат, поэтому этот malloc был скомпилён скорее всего в итоге во что-то, что вернуло uint32 с оффсетом на память.

  2. Далее со значением этого указателя screen имеют дело уже вот тут https://github.com/quin2/fast-paint/blob/main/script.js#L35 в виде обычного числа.

  3. Ну и основной цимес: как чуваки апдейтят canvas context: https://github.com/quin2/fast-paint/blob/main/script.js#L421 - вот просто хоба и скопировали прямо из буфера, в который инстанцировали webassembly с оффсетом pointer шмат памяти и закинули на ctx. Тащемта всё! В этой простоте и вся трагедия - попытка это повторить БЕЗ ВЫЗОВА malloc в сишной части, а просто отступив сколько-то памяти - это какой-то провал и непонятно почему, хоть и незаконно.

 

lesopilorama
()

C++: а чё оно не компилируется?

https://godbolt.org/z/n3YWGMYfn

Хочу 4 конструктора для всех комбинаций (const, sign). Чё оно хочет?

Дадно, пример короче: https://godbolt.org/z/vn3TEn6s3 Тоже не хочет. Почему оно так себя ведёт?

В принципе понятно почему: на такой постановке задачи, сформулированной таким кодом, шаблонный движок не осилил подобрать T = char. Оно пыталось подобрать T = char[6], у него не взлетело и оно бросило попытки. Чё-то такое. Оно дуро?

 

lesopilorama
()

А посоветуйте девайс или софтину под android для 360 фоток

  1. Сейчас юзаю samsung S22 ultra + «Google Camera» приложеньку, в которой есть функция Photo Sphere, которая даёт пока наилучший результат из всех приложенек, которые пробовал вместо этого решения. Бывает куча ошибок склейки и кривые фонари даже днём, но порой выдаёт шедевры и генерит 6000*N картинку - достаточно большое разрешение, чтобы это принималось яндекс-картами например. Пример съёмки этим решением: https://yandex.ru/maps/2/saint-petersburg/?l=stv%2Csta&ll=30.329850%2C59.944130&panorama%5Bdirection%5D=151.685075%2C-9.381176&panorama%5Bfull%5D=true&panorama%5Bpoint%5D=30.329595%2C59.944309&panorama%5Bspan%5D=117.141850%2C60.000000&z=18.86 (как я убираю фотку ног - «земельная» последняя нижняя центральная фотка делается вытянутой рукой отойдя на метр максимально из кадра)

version 8.7.250.494829638.44

  1. Есть всякие аппаратные штуки типа insta360, но стоит конско и непонятно что брать. В идеале хочется «нажал кнопку и готово» - то есть вские аппаратные комбинации из 2 fisheye-объективов, развёрнутых на 180 градусов. Но там недостаток в том, что надо редактировать фотку, вырезая из её низа фотку своей головы. Вроде вот есть обзорчик https://www.youtube.com/watch?v=52dHImsgOY0 но я пока времени вдумчиво посмотреть не нашёл…

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

 360,

lesopilorama
()

Посоветуйте android-мобилу за 5 тыр БУ с авито в качестве резервной.

Из критериев: максимум RAM, производительности и батарейки за эти деньги. Наличие LTE, usb-c. Камера важна не очень. Всё.

Просьба не отвечать, нахваливая своего старичка, нужны ответы именно от стоявших в ситуации подобного выбора и обозревших несколько вариантов в данной категории. Тег samsung стоит для примера, можно что угодно, брендов сейчас слишком дофига.

 

lesopilorama
()

Видеонаблюдение на вебкамерах - насколько это тупо?

Вот есть старые USB веб-камеры с хорошей картинкой типа logitech 9000 pro. Причём, картинка там конкурирует до сих пор с текущими имеющимися на рынке, правда 4K за 8 косарей эту штуку уже уделывает. Их можно втыкать в дешёвые одноплатники и стримить картинку куда-то, где её хранить. Вот так из буханки хлеба можно сделать троллейбус почти бесплатно.

Насколько это маразматически тупо в сравнении с современными IP-камерами типа hiwatch ds-i214? Правда ли, что во втором случае картинка будет даже лучше, да ещё тебе и аппаратно в нормальный кодек пожмут и не надо мутить ссаные одноплатники? Или первый способ ещё для чего-то годен в этой индустрии? Пробовал первым способом делать фото-наблюдение за котом на лежанке, оно с помощью софтины motion отправляла джипег раз в секунду на сервер - было годно тащемта. Но со вторым способом серьёзно в жизни дел не имел.

Главный трейдофф между этими вариантами - экономический. Хорошая IP-камера стоит 5-10К, а эти вебки можно насобирать по 500 руб и одноплатники, которые это потянут я тоже знаю где брать по 700 руб.

 ,

lesopilorama
()

Пояснения по математике для дебилов: а чем вообще так замечательны многочлены в алгебре и нафига они фундаментальны?

f(x) = c0 + c1 * x^1 + c2 * x^2 ... cn * x^n

Чем это вообще кому-то интересно, полезно и замечательно? Зачем это изучать и делать фундаментальным в алгебре? В чём прикол?

Для обычного программиста это выглядит просто рандомной функцией. Почему, например, не взяли функцию вида

f(x,y,z) = c0 * x + sqrt(y) + c2 * (x * y * z * 3)

и не начали усиленно изучать именно это? В чём особый цимес первой функции? Ну типа, зачем что-то возводить именно в какую-то степень? В чём такой большой прикол умножения на самого себя какое-то целое число раз, постоянно возрастающее именно на 1 в каждом следующем члене суммы? А чё если мне надо возводить в степени из массива [1, 1.2, 1.4, 1.5]? Почему степени именно [1,2,3,4,5,6]? Чё за натуральный счёт, кто-то кого-то считает или чо.

 

lesopilorama
()

C++ vs Rust - проблемы этих языков на примерах кода.

Хочется срача по сабжу, но без эпистолярных рассуждений, а чисто на примерах кода.

  1. Rust фанат кидает пример C++ говнокода.
  2. C++ енджоер объясняет, что данный код в 2024 все C++ разрабы пишут не так (и показывает как) и никаких проблем не может быть.

И наоборот.

Например мне Rust-фанаты кинули такое:

#include <iostream>

struct Data {
   const int &ref_;

   explicit Data(const int &_r)
   : ref_(_r) {

   }

   void print() {
      std::cout << ref_ << "\n";
   }
};

int main() {
  Data t(42);

  // Тут ты умер - попытка напечатать 42
  // по ссылке на него, тогда как 42 давно
  // не существует (оно существовало только
  //во время вызова конструктора Data())
  t.print();

  return 0;
}

Но выяснилось, что Rust-фанаты наврали, потому что C++ такое тупо не скомпилирует, если вызывать компилятор с нормальными пацанскими опциями «просто не пропускай херню»:

g++ test.cpp -O3 -Wall -Werror

 ,

lesopilorama
()

C++: как сделать, чтобы это не компилировалось?

Берём ссылку на временный объект, который непонятно сколько времени существует. Потом пытаемся печатать содержимое объекта по ссылке, которая хрен знает куда ведёт.

-Wall -Werror – достаточно по-пацански так жить?


struct Data {
   const int &ref_;
   explicit Data(const int &_r)
   : ref_(_r) {

   }

   void print() {
      std::cout << ref_ << "\n";
   }
};

int main() {
   
   Data t(42);
   t.print(); // развал жопы на куски
   return 0;
}

 

lesopilorama
()

RSS подписка на новые темы