Недавно я читал API boost::optional
и наткнулся на строки:
T const& operator *() const& ;
T& operator *() & ;
T&& operator *() && ;
Я также написал свою собственную программу, которая определяет функции-члены как const &, и && (Обратите внимание, что я не говорю о типе возврата, но спецификаторы перед полуколонами), и они, похоже, работают нормально.
Я знаю, что значит объявлять функцию-член const, но может ли кто-нибудь объяснить, что значит объявить ее const &, и & & &.