Ioann_
Не во всех конечно*
Ivan
У нас они делают вид что всё понимают)
Ioann_
А если джун не такой, то гнать его надо в универ.
А сколько у вас джуны получают, больше 60 ?
Ioann_
Я полагаю что вы не Мск.
mkots
Говорю как джун, да, бьют)
vladislav
ну и правильно
Berkus
Не, я там раньше прочел что команда с 14 на 17 переходит
ну раз переходят - флаг им в руки, барабан на шею, чего сразу ныть то?
Ioann_
Да где я ныл то. Описал свою позицию под пониманием полного перехода на 17 :)
Roman
не могу найти либу дабы сконвертить CDR (corel draw) в SVG, знает кто где искать решение, реально вообще?))
Anatoly
а UniConvertor умеет CDR -> SVG?
https://sk1project.net/modules.php?name=Products&product=uniconvertor
Roman
т.е. получается скрипт написать и бинарник дёргать?
Anatoly
по первой ссылке сырцы
Anonymous
Всем привет! Недавно написал автомат Конвея. Знает кто, как можно анимировать это все дело?
Anonymous
Как в гугле, если написать: "Conway's game of life"
Anonymous
А то у меня просто выводится поколение за поколоением.
Constantine
Или вы хотите мед в улье и след от глайдера пририсовывать?))
Anonymous
Выводить поколение за поколением
У меня так и работает >;D
Anonymous
Я думаю это скучновато
Aleksei
Как в гугле, если написать: "Conway's game of life"
А резве там не поколение за поколением выводится? Просто быстро
Anonymous
Ну он выводится как-бы на "одном месте".
Anonymous
А у меня один под другим.
Aleksei
ааа
Aleksei
А что мешает на одном месте выводить?
Anonymous
Тогда нужно как-то придумать, как удалять тот что вывелся и за ним выводить сразу другой
Nik
Ну можно банально очищать экран
Nik
system("clear");
Anonymous
Спасиб
Anonymous
Попробую
Anonymous
Блин, тогда нафиг я придумывал sleep
Anonymous
Если захотел анимированную
Anonymous
=(
Constantine
Я думаю это скучновато
Да это самая большая залипалка после эволюции велосипедов
Nik
Для более интересной работы с консолью есть еще curses/ncurses
Constantine
Ее нельзя на консоли, хотя любителям можно вим навигацию
Constantine
Там же надо громадное поле
Constantine
Даже 1024х768 мелкое
Anonymous
Ее нельзя на консоли, хотя любителям можно вим навигацию
Вроде что-то интересное. Надо почитать.
Constantine
Честно говоря я не помню размер наименьшей реализации МТ
cyberzx 🇷🇺
http://www.opengl-tutorial.org/
Anonymous
Точно
Anonymous
сяп
Anonymous
glut
cyberzx 🇷🇺
Как узнать, что у класса есть не дефолтный деструктор?
cyberzx 🇷🇺
в type_traits ничего не нашёл
cyberzx 🇷🇺
почему-то только есть has_virtual_destructor. а has_non_default_destructor нет
Aleksei
Как узнать, что у класса есть не дефолтный деструктор?
что за не дефолтные деструкторы? С параметрами что ли?
cyberzx 🇷🇺
нет. когда явно объявлен struct S { ~S() { } }
Tom
нет. когда явно объявлен struct S { ~S() { } }
А в чем тут его отличие от defaultного?
cyberzx 🇷🇺
в том, что ты можешь там сделать что угодно ~S() { _exit(0); } например. а дефолтный нетривиальный деструктор только вызовит деструкторы мемберов и базовых классов тривиальный вообще ничего делать не будет
cyberzx 🇷🇺
да я посмотрел как сделано has_virtual_destructor везде используются интристики компилятора __has_virtual_destructor видимо, через SFINAE эта задача неразрешима
Tom
Можешь на is_trivially_destructible глянуть
Tom
Авось поможет
cyberzx 🇷🇺
а это все немного про другое. это не про наличие спец функции, а про то свойства объекта то есть можешь удалить деструктор =delete; тогда is_destructable будет false это, как раз, делается на sfinae элементарно
Tom
Просто тут https://stackoverflow.com/a/7189821 Вот что есть: Basically this means that a copy or move constructor is trivial if it is not user-provided, the class has nothing virtual in it, and this property holds recursively for all the members of the class and for the base class.
cyberzx 🇷🇺
Да хотел в одном месте сделать статик ассерт
cyberzx 🇷🇺
у меня библиотека биндингов для одного скриптового языка. и есть прокси враппер для значений, которые вытаскиваю из стека виртуальной машины. некоторые значения привязаны к этому врапперу (const char*), то есть освобождаются в его деструкторе.
cyberzx 🇷🇺
ну там addref/release на самом деле
cyberzx 🇷🇺
то есть есть Var<int> -> тут value можно вытащить из Var и оно не будет привязано ко времени жизни владельца. А есть Var<const char*> тут так сделать нельзя, вместе с деструктором Var value станет невалидным
cyberzx 🇷🇺
И я искал способ разделить эти случаи
cyberzx 🇷🇺
Но можно пойти другим путём. Сделать какие-нибудь трейты
cyberzx 🇷🇺
Да можно копировать. Есть враппер для Var<std::string> но это не так оптимально, как заюзать строку прямо из виртуальной машины
cyberzx 🇷🇺
Задача вот такая есть Object. Это абстрактный объект виртуальной машины, у которого может быть любой тип И есть template<T> T Object::Cast() { return Var<T>(vm).value; } если у Var<T> нет деструктора, то я считаю, что value не привязана к Var<T> и может жить после его уничтожения. Иначе value нельзя использовать после того как Var<T> закончит своё существование
cyberzx 🇷🇺
долбаные смайлы
cyberzx 🇷🇺
потому что если сделать Object::Cast<const char*>() то мы получим указатель на удалённую память. Я хочу не решить эту проблему, а статик ассертом запретить использовать подобные касты.
Stanislav
долбаные смайлы
причем в телеге есть опция чтбы реплейсить емоджи, но чето она не особо работает
Aleksei
долбаные смайлы
обоначивай в `
cyberzx 🇷🇺
обоначивай в `
да уже нашёл настройку. вроде помогло ::)
cyberzx 🇷🇺
А зачем эти values потом использовать? Нельзя что-то вроде reference из Cast возрващать, и сказать, что Object owns value? А на крайний случай что-то типа Release() добавить?
А reference не поможет. Мы просто получим висящую ссылку. Проблема в том, что тут смешанная семантика. Есть объекты со счётчиком ссылок без владения, есть объекты с владением Var<const char*> v(vm, 1); // ссылка на первый элемент из стек VM, который является строкой Var<std::string> v (vm, 1); // копируем первый элемент из стека VM в локальную переменную. никаких ссылок не остаётся на VM. получаем полное владение
cyberzx 🇷🇺
пока живёт Var<char const*> можно пользоваться строкой. В виртуальной машине строки, списки и таблицы это объекты со счётчиком ссылок, как в питоне. Var в конструкторе делает addref, а в деструкторе release
Tom
Аа, ну дык и славно. Тогда ты говоришь, что Var owns value и объявляешь использование value после Var's destruction undefined behavior 😉