Size: a a a

pro.graphon (and gamedev)

2020 December 17

d

disba1ancer in pro.graphon (and gamedev)
ты про умные указатели?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
disba1ancer
придумай как оно должно будет работать в плюсцах, да ещё и так чтобы не ломать обратную совместимость
так все беды плюсов от обратной совместимости
источник

d

disba1ancer in pro.graphon (and gamedev)
Alexander Potapov
так все беды плюсов от обратной совместимости
для таких, говорят, придумали раст
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
весь <vulkan/vulkan.hpp> полон проверок static_assert(sizeof(vk::Struct) == sizeof(VkStruct)); и static_assert(std::is_standard_layout_v<vk:Struct>); насколько я помню. Добавить ещё одним полем нечто — нельзя. Так задумано и многие на это заложились.
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
я не знаю сколько они смогут еще насиловать язык прежде чем он станет настолько сложным, что зп C++ разработчиков не станет неподъемной для работодателя
источник

DE

Denis Ershov in pro.graphon (and gamedev)
Anatoly Tomilov
Это потребует какой-то обёртки над каждой структурой. Чтобы она содержала в себе ещё и хэндл инстанса и девайса.
Да, но с другой стороны в hpp и так уже есть обертки над структурами. А со стороны программиста получается двояко, что делаешь вызов функции у конкретного девайса, но в вызове все равно явно еще нужно указывать dispatch.
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Alexander Potapov
я не знаю сколько они смогут еще насиловать язык прежде чем он станет настолько сложным, что зп C++ разработчиков не станет неподъемной для работодателя
вообще не понимаю этих рассуждений. Ты можешь не изучать ненужные тебе области и писать на подмножестве C++.
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
а потом окажется что у другого разработчика другое подмножество
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Denis Ershov
Да, но с другой стороны в hpp и так уже есть обертки над структурами. А со стороны программиста получается двояко, что делаешь вызов функции у конкретного девайса, но в вызове все равно явно еще нужно указывать dispatch.
там лэйаут у этих "обёрток" в точности совпадает с лэйаутом их <vulkan/vulkan.h> двойников
источник

DE

Denis Ershov in pro.graphon (and gamedev)
Anatoly Tomilov
весь <vulkan/vulkan.hpp> полон проверок static_assert(sizeof(vk::Struct) == sizeof(VkStruct)); и static_assert(std::is_standard_layout_v<vk:Struct>); насколько я помню. Добавить ещё одним полем нечто — нельзя. Так задумано и многие на это заложились.
Если правда так, то это более чем объясняет такой подход. :)
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Alexander Potapov
а потом окажется что у другого разработчика другое подмножество
да. Но когда работает команда — они какое-то подмножество используют. Так всегда. Причём есть такие закоулки, которые практически ни одна команда не использует
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
просто мне реально нравится язык, он очень выразительный во многих местах. Но с какого-то момента он стал превращаться в полигон для экспериментов
источник

S

Stas in pro.graphon (and gamedev)
Alexander Potapov
просто мне реально нравится язык, он очень выразительный во многих местах. Но с какого-то момента он стал превращаться в полигон для экспериментов
Ты про experimental или про фичи?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
да вообще метапрограммирование туда притащили просто потому что фанатики решили что это намного хайповее чем классическая рефлексия
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
оно как бы там изначально было но его начали дальше развивать
источник

S

Stas in pro.graphon (and gamedev)
А рефлексии так и нет, да.
источник

S

Stas in pro.graphon (and gamedev)
btw по поводу кода. Почему он не пометил как const?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
билд таймы горят? да и хуй с ним! у нас осталось еще 2 в 16 инстанцированных темплейтов, код сбилдится вовремя!
источник

S

Stas in pro.graphon (and gamedev)
У тебя потенциально bar может взять и скопировать указатель.
источник

AT

Anatoly Tomilov in pro.graphon (and gamedev)
Denis Ershov
Если правда так, то это более чем объясняет такой подход. :)
иначе бы нельзя было передавать указатели на эти структуры в обёрнутые сишные функции. На самом деле хендл/хендлы можно добавить после всех полей. Но, во-первых, он должен будет стать private — нужны будут user-defined copy/move c-tor/operator-ы. Во-вторых, придётся иметь две версии структур, т.к. кто-то не пожелает пользоваться этим функционалом и иметь константный оверхед на каждый экземпляр структуры
источник