cpp-ru / ideas

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

Вести ключевое слово self #410

Closed apolukhin closed 2 years ago

apolukhin commented 3 years ago

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

Наверное многие в коде встречали конструкции вроде (ptr).func(), которые в отличие от ptr->func() выглядят достаточно странно. Примерно то же самое хочется сказать, когда в коде приходится применять конструкции вроде this-> или this: return this или (this)[10] для вызова оператора []. В этом плане представляется интересным ввести ключевое слово self, которое будет являться ни чем иным, как синтаксическим сахаром. По сути аналогом:

#define self (*this)

Получаем на результате

return *this; => return self;

(*this)[10]; => self[10];

this->func(); => self.func(); // вот это требуется достаточно редко, но иногда необходимо
apolukhin commented 3 years ago

yndx-antoshkka, 26 февраля 2019, 11:41 Точно не взлетит: self уже используется многими людьми в коде. Если сделать это слово ключевым - поломается сборка, поэтому предложение не примут.

Правильным решением было бы сделать this ссылкой на текущий класс, а не указателем. Но это надо было делать 30 лет назад, сейчас уже поздно что-то менять.

WPMGPRoSToTeMa, 26 февраля 2019, 19:53 В deducing this пропозале присутствует нечто подходящее.

apolukhin commented 3 years ago

Пересекается/конфликтует с #281

apolukhin commented 2 years ago

В C++23 приняли https://wg21.link/p0847 , теперь можно писать и self