Czy klasę znajomych można zadeklarować warunkowo w C ++ 03?

Chcę zadeklarować klasę znajomego tylko wtedy, gdy warunek (czas kompilacji) jest prawdziwy. Na przykład:

// pseudo-C++
class Foo {
    if(some_compile_time_condition) {
        friend class Bar;
    }
};

Nie znalazłem żadnego rozwiązania w Internecie. Przejrzałem wszystkie odpowiedzi na pytanieDynamiczne generowanie struktur w czasie kompilacji. Wielu z nich używa C ++ 11std::conditional, ale chciałbym wiedzieć, czy jest to możliwe w C ++ 03bez użycia preprocesora.

To rozwiązaniehttps://stackoverflow.com/a/11376710/252576 nie będzie działać, ponieważfriendstatek nie jest dziedziczony (klasa przyjaciół z dziedziczeniem ).

Edytować Aby było to łatwiej widoczne, jak wspomniano poniżej w komentarzu: To wymaganie jest niezwykłe. Jest to część nowego projektu badawczego w symulacji sprzętowej, nad którym pracuję. Testbench jest napisany w C ++ i chcę wyświetlać zmienne w postaci fali. Zbadałem różne inne opcje i odkryłem, że muszę użyćfriend class, ze względów praktycznych. Przyjaciel przechwyci wartości i wygeneruje przebieg, ale wolałbym mieć przyjaciela tylko wtedy, gdy przebieg jest wymagany, a nie cały czas.

questionAnswers(5)

yourAnswerToTheQuestion