• Увеличивать int несколько раз?

    @MarkusD Куратор тега C++
    edward_freedom, смотри. Если ты хочешь показать ошибочность моей просьбы, тебе нужны действительно веские обоснования, а не а не одноранговые моему тезисы, показывающие лишь возможность существования альтернативного моему мнения. Ты не стал выдвигать просьбу на базе своих взглядов, я стал на базе своих. Оба правы и оба в праве.
    Если у тебя есть желание определить точки согласия по данному вопросу, т.е. перевести обсуждение в план дискуссии, то я предлагаю перейти в лс хабра и там продолжить с соблюдением формата дискуссии.
    Да и в любом другом случае, если есть желание, беседу стоит продолжить в личной переписке.
  • Увеличивать int несколько раз?

    @MarkusD Куратор тега C++
    Ribachok, Keyboard::isKeyPressed у тебя, вероятно, вызывается на каждом кадре. Эта функция будет возвращать истину пока клавиша нажата. Тебе стоит самостоятельно реализовать двойную буферизацию состояния клавиш чтобы иметь возможность менять значение только один раз за нажатие клавиши.

    Обычная подсистема ввода в играх имеет два (или более) буфера состояния устройства ввода. В этих буферах лежит история состояния устройства. Через анализ этих буферов выполняются все операции ввода, от простых и однократных нажатий, до сложных жестов и проверок на тайминги для комбо.
    Тебе нужен буфер прошлого состояния клавиш, а в дополнение к текущей проверке нажатия клавиши нужно еще проверить что на прошлом кадре клавиша не была нажата.
  • Увеличивать int несколько раз?

    @MarkusD Куратор тега C++
    edward_freedom, а в чем смысл существования вопроса, ответ на который был найден самим автором через уточнения?
    Подобные вопросы просто занимают место и увеличивают общую меру неопределенности информации - энтропию.
    В этом плане мой совет не странный, а призывает контролировать меру неопределенности.
    Ну а если ты написал фактический ответ, то это хорошо. Надеюсь, автор оценит затраты твоего времени и отметит твой ответ решением. :)
  • Увеличивать int несколько раз?

    @MarkusD Куратор тега C++
    Ribachok, не забудь удалить свой вопрос. Это делается из контекстного меню вопроса.
  • Не получается скачать файл с сайта. Что делать?

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

    @MarkusD Куратор тега C++
    Ternick , ты этот код трассировал?
    icon.seekg(0, icon.end); // 1
    buffer_size = (size_t)icon.tellg(); // 2
    buffer = new wchar_t[buffer_size];
    icon.read(buffer, buffer_size); // 3


    Давай по пунктам.
    Какое состояние будет у стрима после выполнения (1)? Интересует твое описание состояния и показания функций eof()/good()/fail().
    Что именно будет записано в buffer_size после (2)? Что именно отражает функция tellg()?
    Что покажет eof()/good()/fail() стрима после (2)?
    Сколько байт будет прочитано в buffer в результате выполнения (3)?
    Как проверить сколько байт прочитано в буфер? Что содержится в buffer до выполнения (3) и что содержится после выполнения?
  • Что не так с работой unordered_map?

    @MarkusD Куратор тега C++
    kruta, у тебя рядовая проблема понимания аллокаторов. Но о решении говорить еще очень рано.
    Тебе нужно предоставить код аллокатора и код инстанцирования std::unordered_map с этим аллокатором.
  • Куда с точки зрения структурированности нужно писать #include в .h файлы, или в .cpp?

    @MarkusD Куратор тега C++
    Hatemylifezxc , информация к сведению.
    Твой вопрос довольно сильно пересекается с этим вопросом. Насколько сильно, что, можно сказать, повторяет его.
  • Возращение из функции тип template?

    @MarkusD Куратор тега C++
    Данил, условие не просто не сработало. Инстанцирование шаблона требует генерации всех ветвей кода. Твой if (std::is_same<T, std::string>::value) будет всегда приводить к ошибкам, кроме случая когда T это std::string или какой-нибудь тип с неявным преобразованием к std::string.
    Выходов для твоего случая, чтобы компилятор делал именно то, что тебе надо, у тебя всего три. Твой вопрос повторят один из уже заданных.
    В твоем случае все точно так же. Или ты используешь C++17, или частичную специализацию, или SFINAE. Только в этих случаях компилятор сделает то, что тебе надо.
  • Возращение из функции тип template?

    @MarkusD Куратор тега C++
    Данил, вижу листинг ошибки.
    Там вместе с листингом есть указание, на какой строчке и в какой позиции строчки произошла ошибка.
    Это строчка: std::string str = x;.
    Ты ведь понимаешь что компиляция пошла внутрь блока под if (std::is_same<T, std::string>::value)?
    Как ты думаешь, почему это произошло?
  • Возращение из функции тип template?

    @MarkusD Куратор тега C++
    Данил , что значит не компилируется?
    Покажи листинг ошибок при компиляции.

    Ошибка, к слову, у тебя на лицо. Да не одна при том. Но мы начнем с самого начала чтобы тебе стало понятно как такие ошибки решать самостоятельно.
  • Большие шаблонные классы( реализуя CRTP). Все пихать в один .h файл?

    @MarkusD Куратор тега C++
    Артур, может быть тогда тебе пригодится и другой мой ответ?
    Вопрос там у человека тоже был довольно интересный.
  • Почему в структуре array количество элементов пишется там же где и тип данных?

    @MarkusD Куратор тега C++
    Алан Гибизов , все норм. :)
    По вопросу, в моем понимании вопроса, Антон Жилин все верно изложил.
  • Почему в структуре array количество элементов пишется там же где и тип данных?

    @MarkusD Куратор тега C++
    Алан Гибизов , нет, это не вариативный шаблон.
    Игорь Журавлёв , std::array - это высокоуровневая реализация массива фиксированной длины. Второй параметр позволяет задать размерность массива.
    В памяти твой std::array<int, 7> будет эквивалентен типу int[7]. Но вот интерфейс у него будет значительно богаче.
  • Большие шаблонные классы( реализуя CRTP). Все пихать в один .h файл?

    @MarkusD Куратор тега C++
    Артур, дело в том, что CRTP в общем смысле - это mixin.
    Миксины реализуют некоторую очень узкую функциональность поверх некоторого типа. Именно для этого тип в миксин и передается.
    Миксин как бы подмешивает свою функциональность в общую функциональность внешнего типа.
    Обычно эта функциональность является очень компактной, как, например, идиома иммутабельности или идиома некопируемости.

    Например, таким миксином является моя реализация CBSE - композиция.
    Сам миксин там очень прост, хоть и объемен в тексте, но за ним скрывается целая подсистема управления памятью, которая никак не вписывается в один файл или один шаблон одного типа.

    В целом-то, быть может тебе от динамического полиморфизма перейти стоит именно к вариантам CBSE? Композицию сделать можно и другими способами, попроще. А уж компонентно-ориентированный подход сегодня обсуждается очень широко и представлен большим объемом информации.
    Вопрос в том, что именно ты решил изменить через замену динамического полиморфизма на статический?
  • Большие шаблонные классы( реализуя CRTP). Все пихать в один .h файл?

    @MarkusD Куратор тега C++
    Артур , постой-ка. А почему базовый класс должен быть шаблонным? Прямо таки CRTP этого требует?
    Давай проясним суть CRTP. Что это, что обозначает этот акроним и чем CRTP является в общем понимании не привязываясь к конкретному языку?
  • Стоит ли тратить время на GLSL и OpenGL во времена Unreal Engine 4?

    Роман Денискин,
    Так есть ли смысл рыпаться в геймдев разработку изучая кучу новых компетенций

    Тут как сказать... Вот лично я, исключительно по своему опыту. Для меня на моем первом курсе стало откровением что я смогу работать в геймдеве. В те года, насколько мог, я рыл информацию о том, как создавать игры, но находил только информацию о том, как писать свой движок. И интереснее всего для меня стала именно разработка движка.
    Все определяют твои интересы. Если у тебя мало интересов на твоей текущей работе, если тебя тянет в другую область, то попробовать себя, конечно, стоит.

    5-7 лет - это, в большей степени, специфика C++. Использовать его не так просто, обучаться работе с ним тоже непросто. До сих пор на разных должностях работают люди, которые, в целом-то, пишут на этом языке, но зачастую даже не понимают что именно они пишут. Ты смотришь в этот код и у тебя волосы встают дыбом. :)
    Я работаю не только с плюсами, я активно применяю и питон, и шарп, и некоторые встраиваемые языки. И вот если у меня приключается проблема с питоном или шарпом, я чаще иду сюда или на so. Но если у меня случается проблема с плюсами, я иду читать стандарт и документацию. На других языках и писать проще, и проблемы решаются легче. В этом суть вот этих 5-7 лет. А на работу ты можешь пробовать устраиваться хоть с текущими знаниями, тебе по требованиям к сотруднику все расскажут.

    И в случае если я таки решусь, на какие зп тут и на западе может примерно рассчитывать разработчик С++ со знанием того же UE4 + Vulkan?

    Про з/п придется разговаривать непосредственно с будущим нанимателем. Но что-нибудь между $1.5k и $3k/mth вполне может нарисоваться. В общем смысле ты вполне можешь рассчитывать на все те же $2k/mth на среднем уровне. Но еще готовиться стоит к тому, что у пользователей C++ в целом зарплата немного не соответствует требованиям, она обычно изрядно ниже.

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

    Кстати... да...
    разработчик С++ со знанием того же UE4 + Vulkan

    Вот такой толковый человек может рассчитывать на многое.
    Это - Graphics Engineer (Graphics Programmer), от которого требуется не просто уверенное знание плюсов и GAPI, а знания физики, математики, алгоритмов, оптимизации по времени и данным для GPU, понимание современных графических конвейеров и много всякого другого интересного. Обычно у этих людей перекос или в программировании, или в точных науках, а в противоположном направлении наблюдается просадка знаний. Так вот, полноценно развитый инженер графики - это крайне ценный специалист.
  • Стоит ли тратить время на GLSL и OpenGL во времена Unreal Engine 4?

    Роман Денискин , внесу небольшое уточнение.
    Тебе стоит разобраться в своих желаниях.
    Если тебе хочется делать игры: взять все-таки стоит Unity, т.к. там минимальный цикл разработки многократно меньше UE4.
    Если тебе хочется пойти в серьезный геймдев и делать именно игры, тогда все верно: стоит брать UE4 и получить хорошую квалификацию в C++.

    Если тебе хочется работать в области разработки игр, но непосредственная разработка тебя интересует мало, тогда UE4 для тебя - это не более чем книга для чтения, а изучать уже нужно архитектуру, алгоритмы, математику, оптимизацию, профилирование, низкоуровневые API самых разных осей и направлений. Нужно знать как эффективно работать с памятью и с разными процессорами, как эффективно использовать GPU, как эффективно и понятно писать технически сложный код.
    И вот тогда, как написал Владимир Коротенко , ты как минимум будешь понимать что под капотом у высокоуровневых инструментов. Лет через 5-7 начнешь понимать, если прямо сейчас приступишь. Это долгая и тяжелая дорога к работе в серьезных компаниях.

    И через эти 5-7 лет OpenGL уже будет не нужен. Он и сейчас уже не больно-то нужен, в виду наличия более эффективного вулкана. И тут снова проблема. Вулкан - это очень сложная система с множеством свобод и большими требованиями к профессионализму пользователя. К нему надо подходить уже со знанием графического конвейера, а на это снова нужно много времени и практики.
  • Почему не загружается шейдер?

    @MarkusD Куратор тега C++
    Sancei Laks , нужен код инициализации OpenGL.
  • Как передать параметры в другую программу, запускаемую из кода C/C++?

    @MarkusD Куратор тега C++
    Павел Матвеев, именно для этого люди и читают документацию. :)
    system выполняет системную команду в окружении текущего процесса. Если окружением является cmd, команда будет выполнена в cmd, если bash - то в bash. Строка команды будет передана в подключенный командный процессор, если таковой подключен. И даже в подсистеме оконных приложений Windows, system позволит тебе запустить другую программу с передачей в нее параметров запуска.

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

    Вот ты сейчас предположил system("C:/Windows/System32/cmd mkdir directory"), а чего просто не вписал и не попробовал? Можно даже так попробовать: system( "mkdir c:\\my-test-dir" ).
    И как? Работает?