Pull to refresh
4
0.2

C++ разработчик

Send message

В apt-get install foobar apt-get — имя бинарника. Это называется не "постфиксы убрали", а "разработчики APT выпустили новую утилиту apt".

Как будто в этом есть что-то плохое...

Лично я сталкивался с приложениями, не работающими из-за слишком новой версии fontconfig. Наверняка с другими либами тоже бывают такие проблемы.


Просто решения типа snap/AppImage технически ужасны: тянуть все с собой и ставить бесконечное колличество идинаковых либ — печаль беда.

Насчёт AppImage согласен, а вот snap/flatpak — уже совсем другое дело, они предоставляют шаренные рантаймы и дедуплицируют одинаковые либы внутри пакетов.

Тут вроде бы речь о разработке игр, а это обычно Steam со своим рантаймом.

В недостатках CRTP


И вообще, у потомков есть публичные методы, которые нигде, кроме базового класса, использоваться не должны. Это нехорошо, но исправляется через дополнительный уровень абстракции (см. FTSE во второй части).

А что мешает писать так?


class Derived : Base<Derived>
{
private:
  friend Base<Derived>;
  void actionImpl() const { ... }
};

Кстати, имхо более перспективное направление, чем машинная композиция, но почему-то на эту тему особо не видел исследований.

Включен network.security.esni.enabled и network.trr.mode=2. Почти все заблокированные сайты работают без прокси и впн. Но это в России.

gcc -fno-exceptions насколько я понимаю будет вызывать abort. Чтобы вместо исключения new возвращал nullptr надо вызывать new(std::nothrow).

У меня вроде не сильно высокие запросы, но в QtCreator раздражает необходимость дважды нажимать Esc для выхода из режима вставки, а в IntelliJ — неправильная работа отмены (u). Вроде максимально базовые вещи, а уже работают не так, как в vim, причём однозначно в худшую сторону.

Мне кажется, что так как этот пример приводят в контексте геометрии, подразумевается, что единственный инвариант прямоугольника — сохранение прямых углов. И тогда квадрат от него наследовать нельзя, т.к. у него инвариантов больше.
Конечно, вариантов интерпретации может быть много, но это же чисто умозрительный пример, а не реальная задача.

Во время записи макроса все изменения сразу применяются, так что такой проблемы на самом деле нет.

И ещё, если бы список был длинным, я бы применил макрос ко всем строкам через Vi}:normal @w<Enter>, а не считал бы строки.

Записываю макрос копирования, перевода в верхний регистр и перехода на начало следующей строки. 2@w выполняет макрос ещё два раза. Затем копирую блок в фигурных скобках (можно было не переходить для этого в визуальный режим, это просто привычка), заменяю в скопированном блоке const test = на import (опять же, можно было сразу без него скопировать). Далее dWj.j. удаляет из каждой строки фрагмент до пробела. Ну и добавляю from './entity-base'.

Я бы как-то так делал:
jqwwwywWvlpvbgU0jq2@wV%yO<Esc>Pc3wimport<Esc>j^dWj.j.ja from './entity-base'

Ещё как вариант можно растягивать окно на два монитора :)

А потом какой-нибудь код, не знающий разницы между квадратом и прямоугольником меняет созданному Square width.

Да, извиняюсь, немного запутался. void* не является pointer-to-object type, но является object pointer type.


The type of a pointer to void or a pointer to an object type is called an object pointer type.

Тогда reinterpret_cast<void*> и reinterpret_cast<void**> полностью валидны.

Однако void* не является object pointer type.
Если не ошибаюсь, по стандарту каст между object pointer и void pointer может выполняться только со static_cast, хотя по факту любой компилятор reinterpret_cast тоже съест.

У нас повсеместно используются смарт-поинтеры, а эта проверка видимо недостаточно умная, чтобы ругнуться на деструктор unique_ptr.

Information

Rating
2,502-nd
Location
Кипр
Date of birth
Registered
Activity