Несмотря на чтение некоторых сообщений StackOverflow (это и это) и cppreference, я не могу понять, чем нестатическая constexpr
локальная переменная будет полезна по сравнению с static constexpr
одной эм>.
Единственная разница, которую я вижу, заключается в том, что каждый вызов будет иметь свой собственный экземпляр, но, поскольку это constexpr
, я не вижу здесь практического преимущества (поскольку, если я правильно понимаю, это сделало бы каждый экземпляр идентичным и неизменным, делая несколько экземпляров просто избыточными).
Или, если рассуждать с другой точки зрения: поскольку нестатические constexpr
локальные переменные инициализируются при (каждом) вызове функции, у простой const
локальной переменной нет никаких преимуществ, несмотря на то, что ее можно использовать для вычислений во время компиляции. Но когда они нужны для оценки во время компиляции, нет смысла делать их нестатичными.
Итак, мой вопрос: насколько мой аргумент несовершенен и в каких случаях нестатическая локальная переменная constexpr
будет разумной и, возможно, лучшим выбором?
static
. - person Werner Henze   schedule 09.07.2020constexpr
. Если вы просто используете RHS где-то в функции, компилятор все равно может вычислить ее во время компиляции и превратить в константу. Единственный случай, который я могу придумать, где вы хотели бы, чтобы это была переменная, - это если вы используете ее несколько раз в функции и не хотите дублировать RHS, или если вам нужно взять указатель на нее. - person cdhowie   schedule 10.07.2020