Может ли класс друзей быть объявлен условно в C ++ 03?

Я хочу объявить класс друга, только если какое-то условие (во время компиляции) является истинным. Например:

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

Я не нашел никакого решения в интернете. Я прошел все ответы на вопросДинамическое создание структур во время компиляции, Многие из них используют C ++ 11std::conditional, но я хотел бы знать, если это возможно сделать в C ++ 03без использования препроцессора.

Это решениеhttps://stackoverflow.com/a/11376710/252576 не будет работать, потому чтоfriendКорабль не передается по наследству (класс друга с наследованием ).

редактировать Просто чтобы сделать это более заметным, как указано ниже в комментарии: Это требование необычно. Это часть нового исследовательского проекта по аппаратному моделированию, над которым я работаю. Testbench написан на C ++, и я хочу отобразить переменные в форме сигнала. Я исследовал различные другие варианты, и понял, что мне нужно использоватьfriend classИз-за практических соображений. Друг захватит значения и сгенерирует сигнал, но я бы предпочел иметь друга только тогда, когда требуется сигнал, а не все время.

Ответы на вопрос(5)

Ваш ответ на вопрос