Здесь вы найдете видео-уроки по: Программирование C++, Высшая математика, Алгоритмы, Структуры данных, Машинное (компьютерное) зрение, Нейронные сети, Искусственный интеллект, Библиотеки C++ и Паттерны проектирования
"нам нужно чтоб покупатели /клиенты кликали на наши товары и покупали /тратили деньги на нас чтоб больше покупал " вот и вся работа капитализма ,когда все програмирование направленно на то чтоб высасывать из нас деньги
Forwarding ссылка (она же "универсальная", по Мейерсу). Выглядит так Т&& (вместо Т, любое другое имя шаблонного параметра может быть). И вывод типа будет только если шаблон с типом Т конкретно к методу или конструктору, например, применён. Если Т в методе зависит от параметра шаблона класса, то это уже уже не forwarding ссылка, а rvalue-ссылка. Читайте Скотта Мейерса и вообще обучайтесь по книгам, а не по видео.
Если не ошибаюсь, метод wait() после выхода из ожидания не вызывает ulm.unlock(), а значит, всё что выполняется в области видимости ulm с этого момента "парализовано" unique_lock<> и разблокируется только после выхода из области видимости ulm. Поскольку поток в цикле, выхода из области видимости не происходит. В данной задаче это не заметно, но если запустить несколько потоков, они начнут выполнятся последовательно, а не параллельно, что сводит на нет смысл многопоточности. Решается это вызовом ulm.unlock() после cv.wait(..).
"Дохлый страус" супер. Посмотрите, что думает о нем Линус Тосвальд. Я "знаю" (знать все невозможно) 6 языков. Предел входа в с и с++ (не включаем assewmbler) самый тяжелый.
Где деструктор? Кто будет память освобождать. Надо привыкать в С вместе с выделение памяти сразу освобождение описывать. А если размер массива 0 тогда что вернёт квадратные скобки