const &, & and && specificatori per funzioni membro in C ++

Recentemente stavo leggendo attraverso l’ API di boost::optional e ho trovato le righe:

 T const& operator *() const& ; T& operator *() & ; T&& operator *() && ; 

Ho anche scritto il mio programma che definisce le funzioni membro come const &, & e && (Nota che non sto parlando del tipo restituito, ma degli specificatori appena prima del punto e virgola) e sembrano funzionare bene.

So cosa vuol dire dichiarare una funzione membro const, ma qualcuno può spiegare cosa significa dichiararlo const, & e &&.