Так что вы хотели сказать? Что лучше С++ чем С использовать?
Пример ваш прозрачный, ничего страшного/злого/непонятного я не обнаружил.
Есть стандарты и жеские правила оформления кода, в примере они проигнорированы и конечно создается впечатление что работает что то не так, например оператор = а уж темболее =! вообще разве уместно писать в блоке if ()? Беглый взгляд человека, который будет искать ошибку в мегобайтах кода просто упустит вашу хитрую мысль.
Оператор же реализован для (int) темплейта а пытаются ему подмешать (bool) именно подмешать, из-за того что код оформлен позорно!