gentoo.ru
Общение на окологентушные темы
gentoo@conference.gentoo.ru
Воскресенье, 24 февраля 2019< ^ >
Pinkbyte установил(а) тему: Gentoo Linux || FAQ: http://www.gentoo.ru/faq || Вставки более 3 строк → app-text/wgetpaste || Логи: http://gentoo.ru/jabber/logs/ || Языками чешут в talks@conference.gentoo.ru ||  Фортунки http://fortunes.gentoo.ru || Фортунки, спасибо что живы!
Конфигурация комнаты
Участники комнаты

GMT+3
[00:03:57] nordwind вошёл(а) в комнату
[00:17:32] rea вошёл(а) в комнату
[00:23:17] rea вышел(а) из комнаты
[00:47:29] rea вошёл(а) в комнату
[01:42:37] rea вышел(а) из комнаты
[01:43:00] rea вошёл(а) в комнату
[02:09:46] rea вышел(а) из комнаты
[02:17:56] <Deda_Zych> 0xd34df00d: ты про рефлекшоны чтоль?
[02:19:33] <Deda_Zych> trupanka: тебе зачем такая шляпа, наркоман штоле?
[02:19:59] <Deda_Zych> в простом случае - это банальная экономия на спичках
[02:20:13] <trupanka> Сказали программировать максимально общо. Но я как всегда упоролся...
[02:20:57] <Deda_Zych> если от входного типа данных очень разится поведение - то либо специализация шаблонов, либо трюки с enable_if
[02:21:22] <trupanka> Да я уже на tuple что-то делаю.
[02:21:37] <Deda_Zych> ты, похоже, не совсем понимаешь что такое шаблоны и зачем они нужны
[02:22:32] <trupanka> Статический полиморфизм реализуется с их помощью. А еще в них можно упарываться.
[02:23:21] <trupanka> Сейча надо из enum-а сделать tupel.
[02:23:42] <trupanka> Это для списка свойств.
[02:33:01] <Deda_Zych> Qt в помощь и всякая meta-object system.
[02:36:03] <trupanka> Нельзя библиотеки.
[02:50:18] <Deda_Zych> ну тогда трейты напиши, благо это несложно
[02:50:53] <trupanka> Не умею в трейты еще.
[02:51:03] <trupanka> https://gist.github.com/7dbf10f68ac6d001ad1bd53ee09956fa - вроде не плохо получается? А?
[02:58:04] <trupanka> Теперь в make_properties надо сортировать и отфильтровывать свойства, которые не были переданы с enum-ом...
[02:59:04] <trupanka> Но я пока брошу... Теперь надо придумать, как это прикрутить к графу...
[02:59:04] <Deda_Zych> чё в них уметь?
[02:59:13] <Deda_Zych> посмотри как трейт написал
[02:59:17] <Deda_Zych> любой
[02:59:31] <Deda_Zych> это тупо специализация шаблона
[02:59:43] <trupanka> У меня времени до понедельника... А там еще ничего не сделано.
[02:59:50] <trupanka> Да я понимаю.
[03:18:34] <Deda_Zych> мой тебе совет: не заморачивайся с оверинжинерингом: пиши хоть что-то
[03:18:43] <Deda_Zych> а потом уже вылижешь
[03:30:01] <trupanka> Да. Это одна их моих проблем. Я уже третий раз переписываю.)
[03:31:44] <Deda_Zych> бывает
[03:32:36] <trupanka> спокойной ноч.
[03:32:39] trupanka вышел(а) из комнаты
[03:34:01] evadim вышел(а) из комнаты
[04:11:18] Night Nord вышел(а) из комнаты
[04:39:21] hhex вышел(а) из комнаты
[04:56:28] hhex вошёл(а) в комнату
[05:52:59] nordwind вышел(а) из комнаты
[05:53:31] nordwind вошёл(а) в комнату
[07:05:35] medvedko вошёл(а) в комнату
[08:28:01] nordwind вышел(а) из комнаты
[08:28:11] nordwind вошёл(а) в комнату
[08:59:19] nordwind вышел(а) из комнаты: Replaced by new connection
[08:59:29] nordwind вошёл(а) в комнату
[09:01:12] nordwind вышел(а) из комнаты
[09:01:22] nordwind вошёл(а) в комнату
[09:03:29] nordwind вышел(а) из комнаты
[09:03:39] nordwind вошёл(а) в комнату
[09:06:50] nordwind вышел(а) из комнаты
[09:07:00] nordwind вошёл(а) в комнату
[09:09:22] nordwind вышел(а) из комнаты
[09:09:32] nordwind вошёл(а) в комнату
[09:11:16] nordwind вышел(а) из комнаты
[09:11:26] nordwind вошёл(а) в комнату
[09:13:46] nordwind вышел(а) из комнаты
[09:13:56] nordwind вошёл(а) в комнату
[09:19:45] nordwind вышел(а) из комнаты: Replaced by new connection
[09:19:55] nordwind вошёл(а) в комнату
[09:23:01] nordwind вышел(а) из комнаты: Replaced by new connection
[09:23:11] nordwind вошёл(а) в комнату
[09:26:38] trupanka вошёл(а) в комнату
[09:27:32] nordwind вышел(а) из комнаты
[09:27:42] nordwind вошёл(а) в комнату
[09:42:13] nis вошёл(а) в комнату
[10:53:20] medvedko вышел(а) из комнаты
[11:26:51] rea вошёл(а) в комнату
[11:29:05] rea вышел(а) из комнаты: Replaced by new connection
[11:29:15] rea вошёл(а) в комнату
[11:37:19] rea вышел(а) из комнаты
[11:42:30] rea вошёл(а) в комнату
[11:53:27] rea вышел(а) из комнаты
[12:06:32] rea вошёл(а) в комнату
[12:16:24] rea вышел(а) из комнаты
[12:27:32] rea вошёл(а) в комнату
[12:28:20] rea вышел(а) из комнаты
[12:34:24] Night Nord вошёл(а) в комнату
[13:57:33] rea вошёл(а) в комнату
[14:20:12] rea вышел(а) из комнаты
[14:27:31] rea вошёл(а) в комнату
[14:37:23] rea вышел(а) из комнаты
[15:01:32] nis вышел(а) из комнаты
[15:17:33] rea вошёл(а) в комнату
[15:22:28] medvedko вошёл(а) в комнату
[15:53:34] nehex вошёл(а) в комнату
[16:13:27] rea вышел(а) из комнаты: Replaced by new connection
[16:13:37] rea вошёл(а) в комнату
[16:14:07] nis вошёл(а) в комнату
[16:50:16] <trupanka> Deda_Zych: понадобился SFINAE... как написать? template <class... Args> auto make_properties(Args... args). Нужно сделать, чтобы функция ничего не делала, если sizeof...(Args) == 0
[16:52:12] <nis> писать на С++17
[16:54:54] <trupanka> 14
[16:55:19] <nis> 17
[16:55:28] <nis> if constexpr появлися именно там
[16:56:11] <trupanka> Пока сказали на 14.
[16:56:32] <nis> 14 уже устарел
[16:56:53] <nis> я конечно на работе ещё на более старье пишу
[16:56:54] <nis> 11
[16:57:25] <nis> но это потому, что геймдевелоперы (называл бы по другому их), на консоли ещё 14 и 17 не завезли
[16:57:38] <trupanka> А можешь подсказать, как нужно написать? Я просто в этом вообще не разбираюсь.
[16:58:30] <nis> в до 17ую эпоху юзай хелперы
[16:59:15] <nis> у тебя будет empty body для аргумента с размером 0
[16:59:23] <nis> и что-то не нулевое для остального
[17:02:25] <trupanka> А в C++14 нет готового хелпера для проверки простого условия. Или я просто Args не смогу ему передать?
[17:02:59] <nis> так свой напиши
[17:03:04] <nis> тыжпрограммист
[17:08:44] <trupanka> Просто никогда не имел дело с этой концепцией.
[17:09:32] <nis> trupanka: тебе книгу посоветовать?
[17:09:39] <trupanka> Ага.
[17:10:44] <nis> trupanka: C++ Templates The complete guide 2nd - наслождайся
[17:10:56] <trupanka> Посибо.
[17:11:14] <nis> на рунглише нет, но там конкретные примеры
[17:24:30] nordwind вышел(а) из комнаты
[17:24:40] nordwind вошёл(а) в комнату
[17:31:31] <Deda_Zych> [20:48:39] <trupanka> Deda_Zych: понадобился SFINAE... как написать? template <class... Args> auto make_properties(Args... args). Нужно сделать, чтобы функция ничего не делала, если sizeof...(Args) == 0
[17:31:41] <Deda_Zych> static_assert
[17:31:59] <Deda_Zych> sfinae тут не нужно
[17:32:28] <Deda_Zych> опять же, SFINAE нужно для "умной" перегрузки
[17:32:45] <Deda_Zych> где юзаешь enable_if + nhtqns
[17:32:52] <Deda_Zych> *трейты
[17:33:08] <trupanka> Нужно вроде. У меня шаблон не компилируется. Нужно перегрузить.
[17:33:18] <trupanka> Версией, которая ничего не делает.
[17:33:22] <Deda_Zych> инструмент не нужно юзать потому, чтоон крутой
[17:33:39] <Deda_Zych> а для того, что он задачу свою выполяет
[17:33:51] <trupanka> Он выполняет. Как раз понадобился.
[17:33:52] <Deda_Zych> * выполняет
[17:36:13] <trupanka> Я пока 2 фукнции перегрузил на клиенте. Нужно дописать остальное все. Завтра сдавать. На след. неделе поразбираюсь.
[17:36:49] <trupanka> Там точно нужно это SFINAE.
[17:42:15] nordwind вышел(а) из комнаты
[17:42:16] nehex вышел(а) из комнаты
[17:42:25] nordwind вошёл(а) в комнату
[17:44:05] nordwind вышел(а) из комнаты
[17:44:15] nordwind вошёл(а) в комнату
[17:45:12] nehex вошёл(а) в комнату
[17:48:35] <Deda_Zych> [21:35:12] <trupanka> Там точно нужно это SFINAE.
Обоснуй.
[17:49:02] <Deda_Zych> Я выше сказал для чего юзают sfinae
[17:51:04] nis вышел(а) из комнаты: Replaced by new connection
[17:51:14] nis вошёл(а) в комнату
[17:51:53] nordwind вышел(а) из комнаты
[17:52:03] nordwind вошёл(а) в комнату
[17:53:28] nordwind вышел(а) из комнаты
[17:53:38] nordwind вошёл(а) в комнату
[17:53:49] <trupanka> Чтобы компиляция прошла успешно, Нужно запретить эту функцию, если не передали дополнительные аргументы, и выбрать другую функцию, которая ничего не делает.
[17:54:16] <trupanka> static_assert с этим поможет?
[17:55:50] nordwind вышел(а) из комнаты
[17:56:22] nordwind вошёл(а) в комнату
[17:57:39] nordwind вышел(а) из комнаты
[17:59:10] nordwind вошёл(а) в комнату
[18:01:43] nordwind вышел(а) из комнаты
[18:01:53] nordwind вошёл(а) в комнату
[18:04:11] rea вышел(а) из комнаты
[18:06:46] nordwind вышел(а) из комнаты
[18:06:56] nordwind вошёл(а) в комнату
[18:12:28] <0xd34df00d> trupanka: enable_if_t
[18:12:31] <0xd34df00d> Это к вопросу о SFINAE.
[18:14:08] <0xd34df00d> Если возвращаемый тип не лень писать руками, то
template<typename... Args>
std::enable_if_t<(sizeof...(Args) > 0), ReturnType> make_properties(Args... args);
Ну и аналогично для равенства нулю.
[18:14:24] <trupanka> Это как тип возвращаемого значения надо поставить. Понял. Спасиб.
[18:14:24] <0xd34df00d> Альтернативный вариант можно попробовать — просто написать нешаблонную функцию без параметров, она, по идее, будет более высокого приоритета.
[18:14:42] <trupanka> Мне сказали, что так плохо делать.
[18:14:46] <0xd34df00d> Почему?
[18:14:54] <0xd34df00d> Если возвращаемый тип ставить геморно, то тоже есть варианты, но там свои костыли.
[18:16:13] <trupanka> Там пример показали с перегруженным конструктором, где вместо конструктора копирования вызывался метод с ...Args. Потому что копируемый объект не был const
[18:16:44] <0xd34df00d> Ну как бы у всех паттернов свои границы применимости.
[18:17:00] <trupanka> Ну да. Тут не должно быть таких пробьлем.
[18:20:47] <Deda_Zych> [21:52:39] <trupanka> static_assert с этим поможет?
[18:20:53] <Deda_Zych> Ещё как
[18:28:27] nordwind вышел(а) из комнаты: Replaced by new connection
[18:28:37] nordwind вошёл(а) в комнату
[18:29:35] nordwind вышел(а) из комнаты: Replaced by new connection
[18:29:45] nordwind вошёл(а) в комнату
[18:30:52] nordwind вышел(а) из комнаты: Replaced by new connection
[18:31:02] nordwind вошёл(а) в комнату
[18:37:37] rea вошёл(а) в комнату
[18:52:19] rea вышел(а) из комнаты
[18:58:39] nehex вышел(а) из комнаты
[19:17:47] rea вошёл(а) в комнату
[19:58:05] <0xd34df00d> Deda_Zych: и как?
[20:31:30] nehex вошёл(а) в комнату
[20:42:18] <trupanka> Пересечение графа - это операция по вершинам или ребрам?
[20:47:18] <trupanka> Сначала взять пересечение вершин, и добавить для них общие ребра. Или просто взять общие ребра?
[21:32:27] rea вышел(а) из комнаты
[21:44:25] rea вошёл(а) в комнату
[21:50:38] evadim вошёл(а) в комнату
[21:54:20] rea вышел(а) из комнаты
[22:04:59] evadim вышел(а) из комнаты
[22:05:20] evadim вошёл(а) в комнату
[22:19:51] <0xd34df00d> ХЗ.
[22:19:53] <0xd34df00d> И то, и другое имеет сымсл.
[22:19:57] <0xd34df00d> Смотря что конкретно тебе надо.
[22:22:49] rea вошёл(а) в комнату
[22:28:38] rea вышел(а) из комнаты
[22:30:58] medvedko вышел(а) из комнаты
[22:35:38] nehex вышел(а) из комнаты
[22:39:31] <nis> Deda_Zych: тебе кстати не писали на запрос ответ?
[22:39:40] <nis> а то мне так ничего и не ответили
[22:41:52] <Deda_Zych> а?
[22:42:16] <nis> ну по поводу статей про алгоритмы для qrio
[22:42:22] <nis> у меня был один черновик
[22:42:23] <nis> кстати
[22:42:37] <nis> если ты меня в телеге найдёшь, я тебе скинуть могу
[22:43:04] <Deda_Zych> trupanka: операции над графом производятся над вершинами
[23:42:41] rea вошёл(а) в комнату
[23:51:04] rea вышел(а) из комнаты
[23:51:46] rea вошёл(а) в комнату
[23:57:14] nis вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!