C ++ не может сделать это на уровне языка. Даже некоторые предложения в комментариях, такие как проверка, чтобы увидеть, существует ли уже свойство заголовка iostream, не будут работать. Причина в том, что заголовки не изолированы;ничто не мешает файлу .cpp включать заголовок iostream, за которым следует ваш собственный заголовок. Проверка свойства в заголовке дала бы ложный положительный результат, поскольку его включал не заголовок.
Ваш вопрос касается общего графа зависимостей, который не является языком C ++, который распознает язык (впо крайней мере, не так, как заголовки). И если бы у вас были модули C ++ 20 ... ну, вам было бы все равно, потому что импорт модулей не вызывает проблему, которую вы пытаетесь избежать.
Так что любая попытка проверить, что вы 'попытка тестирования в конечном итоге будет основана на чем-то в системе сборки, а не на языке. Максимум, что вы могли бы сделать, это получить дамп, из которых какие заголовки включают какие другие заголовки, и выполнить его через некоторое сопоставление с шаблоном для поиска заголовков iostream.