• Как правильно написать функцию принимающую универсальную ссылку?

    @MarkusD Куратор тега C++
    colorname , я правильно понимаю что свой ответ ты уже получил и правильное решение, решающее твой вопрос, тебе уже не нужно?
    Написано
  • Как разрешить использование только конкретного наследуемого от интерфейса, не финального класса?

    @MarkusD Куратор тега C++
    rusyska55011, решишь задачу правильно, отвечу на твой вопрос.
    Для решения задачи у тебя есть два множества: множество "A" и множество "B". И есть интерфейс с функцией "virtual B Intf::Foo(A) = 0";
    В базе кода уже присутствует полсотни имплементаций этого интерфейса и больше тысячи мест использования имплементаций по интерфейсу.
    Твоя задача - создать еще одну имплементацию "Intf::Foo", для работы которой потребуется сперва как-то изменить как множество "A", так и множество "B".
    Вопрос: какие ограничения уже имеющийся код накладывает на твои возможности по изменению множеств "A" и "B"?
  • Есть ли смысл в бОльшем FPS, если частота обновления монитора 60 Гц?

    Вадим Соловьёв, пять лет с тех пор прошло, без малого.
    А можно узнать почему?

    Можно, конечно. Потому что сегодня мониторы с ограничением вертикальной синхронизации - это уже самый низ бюджетной ниши.
    FreeSync уже очень широко поддерживается и представлен аж несколькими версиями.
    G-Sync поддерживается не мене широко и тоже имеет несколько ревизий.
    Ну и главное. Мифом является то, что человеческий глаз различает не больше 24FPS. В том же 2018 году пошли активные обсуждения о переходе кинематографа на 96FPS. Разница между 60 и 96Hz заметна также хорошо, как и разница между 30 и 60Hz. Разительно заметна. Кинотеатры впечатлили зрителей более плавной и более живой картинкой.
    Разница между 120 и 240Hz заметна ничуть не хуже. Глаз человека продолжает улавливать изменения даже на такой частоте.
    Обработка ввода и рендер с частотой свободной развертки очень сильно меняет игровой опыт. Не в шахматах, конечно. Но даже медитативные игры с уклоном на созерцание дают иной опыт в этом случае.

    Выбор бюджетного офисного монитора для домашнего ПК - это вариант права каждого человека на личную ошибку.
  • Почему явная специализация невозможна?

    @MarkusD Куратор тега C++
    Acaunt, приведи ошибки из лога сборки, текстом, оформленным как код. Люди не читают с изображений.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname,
    1. Effective C++

    Утратила свою актуальность, уступив следующей книге.

    2. Effective Modern C++

    Актуальна. Последнее издание описывает не только тонкости C++14, но и довольно хорошо заглядывает в будущие стандарты.

    3. Effective STL

    Утратила актуальность, уступив изданиям от Вандервуда.

    4. More Effective C++

    Утратила актуальность, еще старше предыдущей книги и описывает немного другой STL.

    5. Exceptional C++

    Актуальна. Позволяет просто понять цель существования исключений в C++. Исключения в последних стандартах менялись не так сильно. После книги актуализировать знания до современного уровня труда не составит именно что за счет знаний из книги.

    6. More Exceptional C++

    Актуальна, как и предыдущая.

    7. Exceptional C++ Style

    Тоже актуальна.

    8. C++ Coding Standards

    Актуальна. Это - классика. К стандартам языка она не привязана.

    9. Modern C++ Design

    Актуальна. Про нее я уже говорил выше.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname, так. Давай еще раз повторю.
    Напиши, о каких именно книгах ты спрашиваешь. Не о авторах, а именно о книгах.

    Иначе я отвечаю твоими же словами:
    это не ответ на мою просьбу. Если упоминаете какие то референсы то и скидывайте конкретные примеры
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname, тогда нужно было в вопросе максимально точно написать, о каких именно книгах идет речь.
    Потому что сейчас твой вопрос звучит именно так, как его прокомментировал Adamos. И ответ свой я дал именно на изложенную формулировку вопроса, а не на ту, которую ты для себя подразумеваешь.

    Напиши, о каких именно книгах ты спрашиваешь.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    colorname
    но в этом и проблема что все книги упомянутых мною авторов датируются 2001-2004 годами

    Ну это немного неправда :)

    Прямо по приведенным мной ссылкам у авторов есть книги 2015, 2017 и даже 2022 годов.
    Они все на английском, в первоисточнике, но разве это проблема для программиста?

    Про книги до 2011 года у меня еще можно заметить некоторую осторожность. Я не отсекаю все книги до 2011 года.
    Например, у Вандервуда и Джосаттиса есть книга по шаблонам C++ от 2003 года, которую я порекомендую читать до второго издания 2020 года. Это потому что в том первом издании рассказывается именно скелет метапрограммирования в C++, а второе издание уже надстраивает над этим скелетом понимание современных шаблонов. Это очень важно, иначе есть риск не понять всю концепцию метапрограммирования в C++.
    Еще в качестве примера, у Йона Снейдера есть буквально замечательная книга по TCP. Эта книга от 2002 года и она актуальна по сей день. Я порекомендую именно ее вместо всяких современных изданий от сомнительных индусов.
    Ровно также я бы не отметал и Современное проектирование на C++ от Александреску. Опыт в этой книге актуален и сегодня.
  • Как зайти в геймдев с 3d и архитектурой?

    Artcomplex, 20 лет по профессии. Этим можно гордиться. Это дает повод уважать.
    Я - инженер, примерно столько же лет занимаюсь написанием кода игр. Я далек от арта и дизайна, поэтому не могу оценить твои навыки по приведенному изображению. Но через разговор сориентироваться могу.
  • Актуальны ли книги Александреску, Майерса и Саттера?

    @MarkusD Куратор тега C++
    Станислав Макаров, вот вообще очень редко. Но может быть это такая специфика C++ собеседований в геймдеве.
    Правило трех или вообще не обсуждали, или всего один раз за последние пять лет обсуждали как правило трех/пяти. Чаще речь заходит только о правиле пяти.
    В целом, я с тобой соглашусь, что очень много где люди до сих пор так и не свыклись с изменениями в C++11 и дальше. Мне с позиции соискателя иногда приходится поправлять собеседующих меня людей по разнице поведения до и после 11го стандарта. И я искренне радуюсь когда со стороны компании выступают хорошо подготовленные по последним стандартам люди, которые могут и мне на мои ошибки указать.
  • Как зайти в геймдев с 3d и архитектурой?

    Artcomplex , какие у тебя навыки в 2D и 3D? Есть коммерческий опыт применения этих навыков, сколько лет и на каких должностях?
  • Можно ли при вызове функции указать в него тип данных?

    @MarkusD Куратор тега C++
    Acaunt, я позволю себе дать ответы на твои вопросы, ни коим образом не отнимая право на них у автора ответа.

    1) Явное лучше неявного. Широкое использование auto только усложняет чтение кода, сбивает читателя с его мысли и заставляет задаваться совсем ненужными вопросами. Поэтому лучше указывать явные типы переменных. А обобщение использовать стоит только тогда, когда указание явного типа только затрудняет понимание кода при чтении.
    2) Интуитивно более понятен и удобен вариант автора ответа, за тем лишь исключением, что обобщенный тип результата в шаблоне - это как у собаки пятая нога. auto в типе результата буквально незачем. Объявление этого шаблона должно быть таким:
    template <typename TResult>
    TResult search (std::string str);

    Это снова потому что явное лучше неявного. Шаблоны читать итак нелегко, а когда там еще и обобщения накручены, то становится только сложнее. Обобщение следует использовать только в обобщенных функциях, а не в шаблонах.
  • Какую роль играют float и double в скобках?

    @MarkusD Куратор тега C++
    RabraBabr,
    а вообще корректно сравнивать между собой два вещественных числа?

    Корректным в C++ является только сравнение значений одного типа между собой. Если полагаться на неявное приведение при сравнении, то выстрелить себе в ногу становится очень легко. Не смотря на то, что C++ это все позволяет.

    yourtexthere, понимать совершаемое - это значит полностью усвоить информацию о совершаемом процессе, выработать навык безошибочного совершения процесса и иметь возможность на каждом шаге экспертно оценить правильность хода совершаемого процесса.
    Нет ничего страшного в том, что ты не понимаешь то, что делаешь. Нет ничего страшного в том, что ты признаешь очевидное для профессионала. Это - просто твои обстоятельства. Слова автора ответа - это просто изложение твоих обстоятельств в тексте.
    Изложенный тобой код действительно безграмотен и на самом деле он не работает так, как ты думаешь. Совпадение результата этого кода с библиотечным значением - чистая случайность.
    И для твоего уровня знаний - это нормально. Нечего стесняться своей безграмотности тогда, когда с ней нужно бороться через изучение и практику.
  • Почему доступ к элементам vector-а O(1)?

    @MarkusD Куратор тега C++
    Quark,
    Но если он основан на динамическом массиве, то как тогда выполняется вставка элементов?

    Через реаллокацию и предварительное выделение.
    Дело в том, что вектор хранит не совсем массив элементов. Он хранит массив слотов под элементы. Каждый такой слот имеет правильное выравнивание и размер для того чтобы хранить сконструированный элемент вектора.
    На памяти слота выполняется placement new в тот момент, когда в слоте создается элемент.

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

    @MarkusD Куратор тега C++
    Дмитрий, душнить, поди, в твоем репертуаре. :) Но и сыпешься ты знатно тоже.

    так и чему он не равен?

    Кто тебе тут сказал что он чему-то не должен быть равен? Или должен? Твоя ошибка - твои проблемы.

    в пропозале C++ написно, что он отложен до C++29.

    Это ты к чему? Кто тебя хоть что-то просил написать про FAM в C++? Перечитай вопросы внимательно и ответь как положено.

    Мне в целом фиолетово, что написано в стандарте, мой код компилирует компилятор, а не стандарт.

    Ну вот в этом и есть основная проблема армии мальчиков, опирающихся на результаты транслятора. Жизнь слепого котенка, конечно, легка и беззаботна, но куда она выведет?
    Транслятор пишется людьми. Люди ошибаются. Ошибка - это нормально, когда ее можно обнаружить и исправить. Но чтобы обнаружить ошибку транслятора, нужно в деталях и тонкостях знать используемый стандарт языка. Ты же опираешься на выдачу транслятора и просто не можешь отследить те моменты, когда транслятор тебе нагнал. А я спокойно пишу отчеты для MSCL, clang и GCC по всем найденным ошибкам. Вот и все.

    ОК. На этом мои полномочия -- всё.

    Ну, т.е. ты слова снова на ветер бросил? Сам бы мог для начала подумать о том, что код демонстрирует и что в нем упрощено для демонстрации. Ты вот только выравнивание заметил, а целую гору остальных нюансов не смог что ли? Душнить же пришел, вроде. ))

    Предлагаю тебе в следующий раз начать общение немного в другом тоне. Возможно и обсуждение выйдет более конструктивным.
  • Можно ли выделить память определенного размера?

    @MarkusD Куратор тега C++
    Дмитрий, первое: пользуемся "Ответить" тому, кому отвечаем. Это удобно, поверь. :)
    Второе: после C99 стандартов больше нет? Какой стандарт C является совместимым с C++17 и что в этом стандарте написано про FAM?

    А ещё у вас UB, когда вызываете placement new на невыровненный массив байтов

    Байт. На невырАвненный массив байт. Ну да, так и есть, и что дальше?
  • Можно ли выделить память определенного размера?

    @MarkusD Куратор тега C++
    Dmitrii
    Вы можете использовать только так:

    Однако же, "почему-то" работает и такое. И не просто работает, а даже в стандарт укладывается.

    То есть размер должен быть известен на момент компиляции.

    И выход за этот размер приведет к UB, сколько бы там памяти выделено ни было.
  • Что за типы функций при импорте OpenCV DLL в Delphi?

    Laax, под вопросом остается только то, какой системой сборки собрана обсуждаемая DLL и в какой среде производится импорт ее символов.
    Не подскажешь по этим пунктам?
  • Как настроить Git для работы с Си/Си++?

    Filipp42, ну тогда решением твоего вопроса будет: Не стоит браться помогать там, где ты ничего не знаешь.
    Очень высок риск того, что принятое тобой решение не окажется верным для тех, кому ты вот так незнамо дела помочь решил. Это будет называться медвежьей услугой.