Нет, это невозможно.Препроцессор довольно тупой и не знает структуры вашей программы.Если T::Doo
не определен в препроцессоре (и это не может быть из-за ::
), он не может вычислить это выражение и завершится ошибкой.
Однако вы можете положиться на компилятор дляСделайте разумную вещь для вас:
if (T::Doo & 0x010) {
// some code here
}
Постоянные выражения и мертвые ветви оптимизируются даже при более низких настройках оптимизации, так что вы можете безопасно делать это без каких-либо накладных расходов во время выполнения.