upd2. Решено. Установил OBS и в источнике показал браузер (ссылку).
вот код
EASTL ?)
size_t
Integral promotion не выполняется по своему определению. else
ожидается строго неотрицательное значение (sizeof(int) - 10)
. О проверке на неотрицательность мы ровно так же забыли, как и о проверке переполнения с беззнаковым размером.int
. И знаешь что? Там UB изо всех щелей торчит в коде. Тут размер выделили, там умножили, сям прибавили и... ой... UB...int
наступает уже просто тогда, когда ты решаешь выделить битовую матрицу 8192x8192 с ячейкой в 64 бита. Или битовый объем 512*512*512 с ячейкой 32 бита. Там выходит ровно 4ГБит информации. Да, такие размеры иногда бывают нужны. Это всего 536МБ.int
в качестве размера все время приходится проверять на соответствие диапазону вместо одиночной проверки для беззнакового.тенденция избегать size_t из-за того, что он является беззнаковым, например, чтобы не попасть на неожиданные signed/unsigned promotion'ы или остатки по модулю 2^N ?
size_t
? К обозначенному в цитате еще вернемся отдельно.size_t
? потому что пакеты UDP быстрее проскакивают через маршрутизаторы, не встречая на своем пути интересные алгоритмы управления потоком, которые применяются к пакетам TCP
template< typename TImplementation >
class Cloneable
{
public:
std::unique_ptr<TImplementation> Clone() const;
// ...
};
class MyClass : public BaseClass, public Cloneable<MyClass>
{
friend class Cloneable<MyClass>;
// ...
};
static_cast
лично я никакой не вижу. Приведение типа времени трансляции с полной проверкой на соответствие. Никаких проблем нет.
Ты, конечно, можешь не отвечать. Но это ведь тебе нужно чтобы у тебя всё начало работать.