Внесу свои пять копеек в кассу.
1. Допустимость переменных с одинаковыми именами во вложенных областях видимости. Даже варнинги на четвертом уровне не выдает, зараза.
int i = 0;
{
int i = 0;
... код ...
обратимся к i. Угадай с трех раз к какому при быстром просмотре кода :(
}
2. Отсутствие полиморфизма времени компиляции в макросах. В С99 конечно вариадики ввели, но все равно не айс
3. Невозможность вложенного препроцессора.
4. Возврат функцией только одного значения. Бесконечные ссылочные и указательные аргументы — лишний код
. Возврат классов не панацея
Остальное все устраивает. Я скромный ^_^.