Ref-qualifiers
Сегодня похоже день каких-то удивительных открытий.
Сейчас копался в исходниках ranges в libstdc++ и наткнулся на вот такое объявление функции-члена в классе: void foo() &&
.
Оказывается, что в C++11 были введены по аналогии с квалификаторами const и volatile квалификаторы rvalue и lvalue references
на функции-члены.
Теперь допускается использовать такие квалификаторы для нестатических функций-членов:
// старые
void foo();
void foo() const;
// новые
void foo() &;
void foo() &&;
void foo() const &;
void foo() const &&;
При этом нельзя смешивать новые и старые квалификаторы, будет ошибка компиляции.
Вот ссылка на хорошую статью, в которой описывается зачем они были введены и как работают. Судя по всему, там вообще весь блог довольно интересен:
https://akrzemi1.wordpress.com/2014/06/02/ref-qualifiers/
comments powered by Disqus