Я думаю, что вы смешиваете как минимум 3 концепций.Есть стандартные пути включения.Они не вызывают включение какого-либо файла.Есть принудительные включения.Они могут привести к включению assert.h
, но вы должны явно заставить компилятор сделать это.
Наконец, любой заголовок C ++ может косвенно включать assert.h
, и вот что с вами происходит - насколько я могу судить, не видя реального кода.