QModelIndex слишком мал, чтобы держать умный указатель
Не совсем понимаю контекст.
QModelIndex содержит четыре поля: модель, строка, столбец и 8-байтовый указатель на что угодно. А shared_ptr, во-первых, шестнадцать байт, во-вторых, управляемый и даже на x86 протаскивать через посторонний тип не стоит.
Да, да, да! Я детектирую повисшие указатели. У живого объекта проверочная цифра правильная, а у умершего — сбита.
1. QModelIndex слишком мал, чтобы держать умный указатель.
2. Объект может быть потёрт не только деструктором, но и совершенно посторонним кодом.
jcmvbkbc, Читай описание: это проверка на повисший указатель! Если указатель смотрит на уничтоженный объект, проверка должна провалиться раньше, чем будет сделано что-то деструктивное.
Задача: память портится, кто портит — непонятно.
Lynn «Кофеман», А подмодули я пытаюсь применить к другой части — к сборке языкового ресурса. Дело относится только к сборке инсталлятора (перевести или откомпилировать можно и без Git), и для этого нужно собрать консольный переводчик. Главный камень преткновения — какие нужны команды Git для всего этого.
Хотел отметить решением, но это неверно. Могут существовать частичные решения, которые скажут «да» на наш алгоритм и «ХЗ» на остальные. И если это решение гарантированно и доказанно работает для определённого класса алгоритмов — ну чем не доказательство?
Тут, блин, сложнее — теория рекурсивно перечислимых множеств.
Ну или как-то доказать, что алгоритмов, выдающих a+b, больше, чем подобных частичных решений.
Lynn «Кофеман»,
Посмотрите на мой предпоследний вопрос: я попытался собрать KTextEditor — у меня просто НЕ ПОЛУЧИЛОСЬ. Там очень нестандартная цепочка сборки с кучей посторонних зависимостей, и скрипт для CMake вылетает с ошибкой: чего-то не хватает, ХЗ чего.
Lynn «Кофеман», Язык программирования не важен, поскольку задача компилятора — увидеть файлы в папке, и всё. MinGW. Симлинки нормально компилирует.
И да, я хочу собирать грабли САМ, но чтобы другие пользователи могли собрать проект с минимумом посторонних утилит и уж тем более КАЧАТЬ ZIP, да и всё, БЕЗ УСТАНОВКИ ГИТА!!!
Lynn «Кофеман»,
То, что вы называете «стандартные механизмы», стандартные только на Linux. И то с оговоркой, потому что требуют многоэтажных командных строк. А под Windows — подобные утилиты часто требуют более крупных загрузок и большего геморроя с настройкой, чем собственно прога, которую ты пишешь.
Lynn «Кофеман»,
И я не понимаю, как эта система сочетается с путями, прописанными в системе сборки (QMAKE, например). Две разных копии модуля для двух проектов? Когда пишешь в одиночку, ты точно знаешь, что тебе не нужно вызывать pull — с двумя копиями уже нужно! Один проект в стороне? А в каком каталоге, что писать в *.pro?
Lynn «Кофеман»,
Например, я по-чёрному использую симлинки, чтобы в том каталоге, куда программа откомпилировалась, были самые последние версии данных. Ну не классно?
Но тут ИСТОЧНИК в репозитарии, ССЫЛКА не версионируется. А я хочу версионировать и источник, и ссылку — как ни крути, ссылка будет в Git’е.
Lynn «Кофеман»,
А что взамен?
Налаживать внешнюю зависимость ради тридцати килобайт? Человек, скачавший репозитарий как ZIP, вообще ни хрена не скомпилирует.
Синхронизировать файлы вручную? Я УЖЕ ЗАДРАЛСЯ.
А с юнит-тестами как быть? Строить третий проект юнит-теста специально для общих модулей (и без того бывает, что модуль изменил — юнит-тестов не запустил), таскать в общем репозитарии Google Test? Как соизволите каталоги наладить?
Симлинк — тоже стандартный механизм, когда один и тот же файл должен быть одинаковым тут и там.
Lynn «Кофеман»,
Мне нужен этот файл. Но не нужно его оформлять в Git’е как симлинк. Гит слишком умный и понимает симлинки. Как эту функциональность отключить?
Lynn «Кофеман», Есть два проекта.
Есть личная библиотека килобайт на тридцать. Ради такой не хочется заводить «большие пушки».
Она общая для обоих проектов. Занимается в основном теми штуками Qt, которые не сподобились сделать из коробки (например, наборы флагов QDlgType::FIXED и QDlgType::SIZEABLE), и простейшими строковыми операциями (например, str::trimSv — trim на string_view).
Иногда не расшаблонивается правильно. Иногда новую функцию хочу — в общем, библиотека не отлита в бронзе. Я просто хочу упростить синхронизацию этой библиотеки между двумя проектами.
А симлинки — это только вопрос удобства. Есть — хорошо. Нет — всё соберётся и так.
Lynn «Кофеман», Изменяешь в одном проекте — изменилось в другом.
Dmitry Roo, Чем проще развёртывание, тем лучше. И без того есть пара нестандартных шагов развёртывания — не хочется ещё и третий добавлять: качать определённый репозитарий и добавлять в определённый каталог.