Запрошенное краткое объяснение правил свертывания ссылок: (1) A & & -> A &, (2) A & && -> A &, (3) A && & -> A & и (4) A && && -> A &&

Следующая ссылка предоставляет 4 формы свертывания ссылок (если ям правильно, что это только 4 формы):http://thbecker.net/articles/rvalue_references/section_08.html.

Из ссылки: A &

 & становится A & A & && становится A & A && & становится A & A && && становится A &&

Хотя я могу сделать обоснованное предположение, я хотел бы получить краткое объяснение обоснования каждого из этих правил свертывания ссылок.

Смежный вопрос, если можно так: используются ли эти правила свертывания ссылокв C ++ 11 внутренне такими утилитами STL, как,std::move()std::forward()и тому подобное, в типичных реальных случаях использования? (Примечание: яЯ специально спрашиваю, используются ли правила свертывания ссылок в C ++ 11, в отличие от C ++ 03 или более ранних.)

Я задаю этот связанный вопрос, потому что мне известны такие утилиты C ++ 11, какstd::remove_reference, но я не знаю, если ссылки, связанные утилиты, такие какstd::remove_reference обычно используются в C ++ 11 дляизбегать необходимости правила свертывания ссылок, или они используютсяв сочетании с правила свертывания ссылок.

Ответы на вопрос(2)

Ваш ответ на вопрос