Кажется, что boost :: deep_first_search не поддерживает это, но базовый boost :: deep_first_visit делает это через свою 2-ю перегрузку, допускающую «функцию-терминатор» (TerminatorFunc).
Таким образом, вы можете скопировать реализацию boost :: deep_first_search и заменить параметр detail :: nontruth2 (), переданный в boost :: deep_first_visit, своей собственной (нетривиальной) функцией-терминатором.