Может ли класс друзей быть объявлен условно в 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
Из-за практических соображений. Друг захватит значения и сгенерирует сигнал, но я бы предпочел иметь друга только тогда, когда требуется сигнал, а не все время.