Andrei
Кажется я не прав.
🦥Alex Fails
Что где
Алдар
template<class T> class Base { ... }; class Derived: public Base<Derived> { ... }; Для чего это нужно бывает?
🦥Alex Fails
template<class T> class Base { ... }; class Derived: public Base<Derived> { ... }; Для чего это нужно бывает?
Это мой любимый хак, я его в первый раз написал, как шаблоны вкурил)
Sergey
Ну
🦥Alex Fails
Позволяет внедрять зависимости через общиц интерфейс
Andrei
стойте.
Andrei
блин, это просто статический полиморфизм.
Andrei
У нас тут ошибка.
Andrei
Я не знаю почему, но отсутсвие виртуального деструктора делает какой-то дикий type-erasure
Andrei
и деструкторы полей таки не вызываются.
Andrei
Да, my bad
Andrei
Забыл про последоватльеность.
Andrei
B* b = new B(); A* a = b; delete a;
Здесь действительно всё плохо, без виртуального деструктора A
Andrei
Очень плохо.
Andrei
http://ideone.com/9zjUOy
Алдар
реализуйте библиотечную функцию remove_if
Andrei
где
CRTP, нужно в первейшую очередь для статического полиморфизма. Как раз когда мы не хотим иметь дело с виртуальными функциями
Andrei
про депенденсу инжекшн это в яваконференции пожалуйста :D
Алдар
можно ли инлайнить виртуальную функцию?
Алдар
ладно пошёл эликсир потрогаю)
Andrei
И разумеется их можно вызывать.
Алдар
можно ли кидать исключения из деструктора?
Andrei
И тоже можно.
Andrei
другое дело, что в стандартной библиотеке деструкторы объявлены noexcept и ты просто на такой фокус получишь std::terminate
Алдар
что такое POD и для чего он нужен?
Andrei
либо double fault
Andrei
Если это случилось внутри обработчика exception
🦥Alex Fails
Plain old data
Тупо типы из языка Си
Andrei
Но кидать можно.
Andrei
И про vtable в конструкторе тоже неправильный ответ :с
🦥Alex Fails
Тупо типы из языка Си
Без ctor, dtor, одна видимость
🦥Alex Fails
где
Это "где" я ткнул не туда🙈хотел на то, где ошибка
Andrei
под это не объект си
🦥Alex Fails
Без ctor, dtor, одна видимость
Там еще что-то было, но я забыл
Andrei
Не думаю что это UB
Andrei
Просто вызовется неполиморфная версия.
Andrei
Хотя так и можно спродюсировать pure virtual call
🦥Alex Fails
под это не объект си
Это любой пользовательский тип, который...
Andrei
Нет.
Andrei
бля
Andrei
пиздец
Andrei
у меня все расспыалось нахуй
Andrei
ща
Andrei
РРР
🦥Alex Fails
Andrei
ТАк
Andrei
Ппц
Andrei
В общем.
Andrei
В 11 плюсах
Andrei
pod
Andrei
это либо массив pod-ов, либо скалярный тип, либо пользовательский тип, rjnjhsq
Andrei
которы
Алдар
чем make_shared лучше чем обычное создание?
Andrei
являетсся trivial type
Andrei
не имеет нестатические неPOD члены
Алдар
как работает функция std::move?
Andrei
и является standart layout type
Алдар
что такое perfect forwarding?
Andrei
до 11 плюсов по другому определялось.
Andrei
trivial это значит что он
Andrei
trivially copyable
Andrei
и trvially constructible
Andrei
что в свою очередь значит, нет юзер провайдед конструктора
Andrei
нет виртуальных функций
Алдар
trivially constructible это значит дефолтный конструктор есть?
Andrei
нет виртуальных бейз классов
Алдар
trivially copyable значит можноо тупо память скопировать?
Andrei
Полегче
🦥Alex Fails
Andrei
НЕТ!
🦥Alex Fails
Я блин 4 дня уже не спал
Andrei
Да
Нет!