История изменений
Исправление MOPKOBKA, (текущая версия) :
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Если ты определил RBTree<int> то не сможешь вызвать методы с char*. А внутри идет работа с безтиповыми данными.
В Go совсем по другому сделано, там void *value; а тут я предложил char value[] - Flexible array member.
Исправление MOPKOBKA, :
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Если ты определил RBTree<int> то не сможешь вызвать методы с char*. А внутри идет работа с безтиповыми данными.
В Go совсем по другому сделано, там void *value; а тут я предложил char value[].
Исправление MOPKOBKA, :
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Если ты определил RBTree<int> то не сможешь вызвать методы с char*. А внутри идет работа с безтиповыми данными.
В Go совсем по другому сделано, там void *value; а тут char value[].
Исправление MOPKOBKA, :
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Если ты определил RBTree<int> то не сможешь вызвать методы с char*. А внутри идет работа с безтиповыми данными.
Исправление MOPKOBKA, :
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы. Выйдет не менее безопасно чем если делать сразу на шаблонах.
Исходная версия MOPKOBKA, :
Ты только что реализован интерфейсы на Go или struct list_head из ядра. Одно невереное движение и ты получил memory corruption, вытащив не тот тип из структуры, что нужно. Помимо экономии на спичках получили потенциальный RCE. Зачем так делать?
Так для этого и нужна template обвязка, она проверяет типы.