Ioann_
Не во всех конечно*
Ioann_
Ivan
У нас они делают вид что всё понимают)
Ioann_
Ioann_
Я полагаю что вы не Мск.
mkots
Говорю как джун, да, бьют)
vladislav
ну и правильно
Ioann_
Да где я ныл то. Описал свою позицию под пониманием полного перехода на 17 :)
Roman
не могу найти либу дабы сконвертить CDR (corel draw) в SVG, знает кто где искать решение, реально вообще?))
Anatoly
Roman
Roman
Roman
т.е. получается скрипт написать и бинарник дёргать?
Anatoly
по первой ссылке сырцы
Anonymous
Всем привет! Недавно написал автомат Конвея. Знает кто, как можно анимировать это все дело?
Anonymous
Как в гугле, если написать: "Conway's game of life"
Anonymous
А то у меня просто выводится поколение за поколоением.
Constantine
Constantine
Или вы хотите мед в улье и след от глайдера пририсовывать?))
Anonymous
Anonymous
Anonymous
Я думаю это скучновато
Aleksei
Anonymous
Ну он выводится как-бы на "одном месте".
Anonymous
А у меня один под другим.
Aleksei
ааа
Aleksei
А что мешает на одном месте выводить?
Anonymous
Тогда нужно как-то придумать, как удалять тот что вывелся и за ним выводить сразу другой
Nik
Ну можно банально очищать экран
Nik
system("clear");
Anonymous
Спасиб
Anonymous
Попробую
Anonymous
Блин, тогда нафиг я придумывал sleep
Anonymous
Если захотел анимированную
Anonymous
=(
Nik
Для более интересной работы с консолью есть еще curses/ncurses
Constantine
Ее нельзя на консоли, хотя любителям можно вим навигацию
Constantine
Там же надо громадное поле
Constantine
Даже 1024х768 мелкое
Anonymous
Constantine
Честно говоря я не помню размер наименьшей реализации МТ
cyberzx 🇷🇺
cyberzx 🇷🇺
http://www.opengl-tutorial.org/
Anonymous
Точно
Anonymous
сяп
Anonymous
glut
cyberzx 🇷🇺
Как узнать, что у класса есть не дефолтный деструктор?
cyberzx 🇷🇺
в type_traits ничего не нашёл
cyberzx 🇷🇺
почему-то только есть has_virtual_destructor. а has_non_default_destructor нет
cyberzx 🇷🇺
нет. когда явно объявлен
struct S
{
~S() { }
}
Tom
cyberzx 🇷🇺
в том, что ты можешь там сделать что угодно
~S() { _exit(0); }
например.
а дефолтный нетривиальный деструктор только вызовит деструкторы мемберов и базовых классов
тривиальный вообще ничего делать не будет
Tom
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
долбаные смайлы
причем в телеге есть опция чтбы реплейсить емоджи, но чето она не особо работает
Tom
Tom
cyberzx 🇷🇺
пока живёт Var<char const*> можно пользоваться строкой. В виртуальной машине строки, списки и таблицы это объекты со счётчиком ссылок, как в питоне.
Var в конструкторе делает addref, а в деструкторе release
Tom
Аа, ну дык и славно. Тогда ты говоришь, что Var owns value и объявляешь использование value после Var's destruction undefined behavior 😉