Эквивалент #ifdef для переменных constexpr?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Эквивалент #ifdef для переменных constexpr?

Сообщение Anonymous »

Мне нужен совет.
Система: Ubuntu 20.04, g++ 9.4.0 (c++17)
Традиционно в C мы используем #define вместе с #ifdef, например:

Код: Выделить всё

#define FOO true

#ifdef FOO
//Do something
#else
//Do something else
#endif
В мире C++ кажется, что constexpr предпочтительнее #define, поэтому я стараюсь быть более C++.
После небольшого исследования, скажем, мы хотели воспроизвести приведенный выше код в стиле C. Вместо #define у нас будет что-то вроде этого:

Код: Выделить всё

constexpr bool FOO{true};
Но тогда как нам выполнить #ifdef?
Есть предположения, что для проверки переменной constexpr можно использовать следующее:

Код: Выделить всё

if constexpr (FOO == true) {
//Do something
}
else {
//Do something else
}
Насколько я вижу, это нельзя запустить вне функции и, следовательно, не может использовать препроцессор.
Есть ли способ репликации директив препроцессора #ifdef..#endif при использовании спецификатора constexpr?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... -variables
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»