Так есть ли смысл рыпаться в геймдев разработку изучая кучу новых компетенций
И в случае если я таки решусь, на какие зп тут и на западе может примерно рассчитывать разработчик С++ со знанием того же UE4 + Vulkan?
разработчик С++ со знанием того же UE4 + Vulkan
system выполняет системную команду в окружении текущего процесса. Если окружением является cmd, команда будет выполнена в cmd, если bash - то в bash. Строка команды будет передана в подключенный командный процессор, если таковой подключен. И даже в подсистеме оконных приложений Windows, system позволит тебе запустить другую программу с передачей в нее параметров запуска.system("C:/Windows/System32/cmd mkdir directory"), а чего просто не вписал и не попробовал? Можно даже так попробовать: system( "mkdir c:\\my-test-dir" ).system? При создании cars стоит указать тип vector, иначе это будет initializer_list, который несколько раз (!) будет копироваться в нормальный контейнер.
cars будет иметь тип std::initializer_list<Car>, но его копирование - это не проблема. std::initializer_list является легковесной надстройкой над статическим массивом на стеке. Внутренняя реализация этого типа не стандартизирована, но практически всегда его размер не превышает двух регистров процессора. world.push_back(std::move(terr));world хранит std::unique_ptr<object>, но std::move(terr) вернет std::unique_ptr<Terrain>&&. Чтобы в push_back передать правильный std::unique_ptr<object>&& будет использован конструктор преобразования (6). Это произойдет без проблем, но вот что потеряется - так это указание, какой именно деструктор нужно вызвать.vector<object> означает вектор инстанций. Там будут храниться обособленные объекты. В частности, в коде vector<object> wld = { terr } ты сказал неявно сузить экземпляр Terrain до экземпляра object и инициализировать вектор копией этого экземпляра.wld ты мог обратиться к объекту terr, в векторе тебе нужно хранить указатели.object из вектора wld ты мог получить данные о coords, твой тип Terrain должен оперировать полями object, а от дубликатов этих полей в Terrain нужно избавиться.А сейчас компилятор обращается к свойству coords класса object.
using namespace std;. Это крайне плохая практика, если коротко. vector<object> wld = { terr };
Давай проясним суть CRTP. Что это, что обозначает этот акроним и чем CRTP является в общем понимании не привязываясь к конкретному языку?