Size: a a a

2020 August 14

AP

Antony Polukhin in pro.cxx
Constantine Drozdov
@antoshkka слушай, мне тут пришла в голову такая простая до гениальности мысль, что удивлюсь, если вопрос уже не обсужден 20 раз - почему просто не разрешить писать "this." ?
А что делать в случае
struct T;

void foo(T&);
void foo(T*);

struct T {
   void something() { foo(this); }
}


Ну и вообще, куча мороки, с описыванием исключения из правила... и почему тогда не разрешить и для указателей использовать точку?
источник

PP

Pavel Perekhozhikh in pro.cxx
Т-34 85
Переслано от Roman na
нормальный человек предложит self, который будет ref
А где нить в winapi есть вот такая радость
#define ref ...
источник

CD

Constantine Drozdov in pro.cxx
Antony Polukhin
А что делать в случае
struct T;

void foo(T&);
void foo(T*);

struct T {
   void something() { foo(this); }
}


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

AP

Alexander Potapov in pro.cxx
Ага, которая небось std::ref ломает
источник

CD

Constantine Drozdov in pro.cxx
Antony Polukhin
А что делать в случае
struct T;

void foo(T&);
void foo(T*);

struct T {
   void something() { foo(this); }
}


Ну и вообще, куча мороки, с описыванием исключения из правила... и почему тогда не разрешить и для указателей использовать точку?
Все еще T*, слишком breaking до возможности его нормально провести
источник

VS

Vladimir Suisei in pro.cxx
Constantine Drozdov
std::reference_wrapper
Можешь пояснить?
источник

CD

Constantine Drozdov in pro.cxx
Vladimir Suisei
Можешь пояснить?
Там ненулевой указатель, а -> только потому, что . не сделаешь
источник

CD

Constantine Drozdov in pro.cxx
Antony Polukhin
А что делать в случае
struct T;

void foo(T&);
void foo(T*);

struct T {
   void something() { foo(this); }
}


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

AP

Alexander Potapov in pro.cxx
Самый ужас это когда приходится писать так
(*this)[i]
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
@antoshkka слушай, мне тут пришла в голову такая простая до гениальности мысль, что удивлюсь, если вопрос уже не обсужден 20 раз - почему просто не разрешить писать "this." ?
зочем?
источник

CD

Constantine Drozdov in pro.cxx
есть мнение, что в итоге -> должна быть потенциально опасной, а . всегда безопасной операцией
источник

CD

Constantine Drozdov in pro.cxx
не считая проблем с перегрузкой, исключение в виде "this->" просто единственное
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
не считая проблем с перегрузкой, исключение в виде "this->" просто единственное
Ну и чуй с ним
источник

ПК

Побитый Кирпич... in pro.cxx
индирекцию через this почти не используют
источник

CD

Constantine Drozdov in pro.cxx
Побитый Кирпич
индирекцию через this почти не используют
кроме случаев, когда она обязательная?)
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
кроме случаев, когда она обязательная?)
Ну это редкие кейсы
источник

CD

Constantine Drozdov in pro.cxx
Побитый Кирпич
Ну это редкие кейсы
не уверен, что их редкость будет убывать со временем
источник

ПК

Побитый Кирпич... in pro.cxx
Ну и this-> это безопасная операция, потому что this всегда есть
источник

CD

Constantine Drozdov in pro.cxx
Побитый Кирпич
Ну и this-> это безопасная операция, потому что this всегда есть
Всегда есть и читаем, да. Он является даже более гарантированной ссылкой, чем просто ссылка
источник

AS

Artur Solovev in pro.cxx
Насколько "всегда есть"? Сделать (Foo*)nullptr->Bar() это UB?
p.s. (*this).Bar() =)
источник