Эквивалент #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.
У нас будет что-то вроде:

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

constexpr bool FOO{true};
для #define, но тогда как нам выполнить #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++»