cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

Убедить комитет не вводить новое ключевое слово constexpr! #316

Closed apolukhin closed 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +11, -2 Автор идеи: neondev9

В C++20 планируют вести так называемые constexpr!-выражения. Это как-бы тот же constexpr, но вот только работающий только compile-time.

Предлагаю выбрать какое-либо альтернативное ключевое слово для подобных выражений, будь-то staticexpr или что-либо более точное. Но слово constexpr! однозначно не стоит вводить, поскольку оно:

Стоит заметить, что новое ключевое слово должно содержать -expr суффикс, и таким образом у нас будет семейство: constexpr, reflexpr, staticexpr (как вариант, но нужно что-то получше)

apolukhin commented 3 years ago

Игорь Шаповал, 6 июля 2018, 9:30 Я думаю не нужно добавлять новое ключевое слово или изменять. На много лучше будет добавить атрибут, который будет используется вместе с constexpr. Например, [[static_only]] или [[constexpr_only]]. Он будет указывать, что вычисление будет выполняться только во время компиляции. Зоопарк в виде constexpr, constexpr! или staticexpr мне кажется через чур.

[[static_only]]
constexpr int sum(int a, int b) {
   return a + b;
}

neondev9, 6 июля 2018, 12:27 согласен с вашими словами. Но в идеале это всё нужно было определить сразу, в 11-ом стандарте когда только вводили constexpr и тогда сразу чётко определить ключевые слова для обоих случаев.

Саша Зайцев, 6 июля 2018, 15:46 Игорь Шаповал, кстати мне тоже идея с атрибутом нравится.

yndx-antoshkka, 12 июля 2018, 12:57 Пока подлил масла в огонь, и передал ваши коментарии (из этой темы и из https://stdcpp.ru/proposals/37161dcc-eeaf-4d8d-8556-b3f7a4e64954) в приватные обсуждения ISO.

Многим новое слово constexpr! не нравится. Пока люди перебирают варианты для замены.

neondev9, 24 июля 2018, 16:20 есть какие-то новости?

WPMGPRoSToTeMa, 27 июля 2018, 1:50

содержит в себе восклицательный знак, что абсолютно противоречит стилю именования ключевых слов в С++.

Ну, кстати, нечто подобное уже есть - sizeof...

apolukhin commented 3 years ago

В C++20 приняли consteval