Следующая ссылка предоставляет 4 формы обращения коллапса (если я прав, что это только 4 формы): http://thbecker.net/articles/rvalue_references/section_08.html.
Из ссылки:
- а & и становится A &
- а && & становится A &
- а && и становится A &
- а && & & становится A &&
Хотя я могу сделать обоснованное предположение, я хотел бы дать краткое объяснение обоснования каждого из этих правил сбрасывания ссылок.
Связанный вопрос, если бы я мог: Являются ли эти правила сбрасывания ссылок в С++ 11 внутренними с помощью таких утилит STL, таких как std::move()
, std::forward()
и т.п., в типичные случаи использования в реальном мире? (Примечание. Я задаю вопрос, используются ли правила сбрасывания ссылок в С++ 11, в отличие от С++ 03 или ранее.)
Я задаю этот связанный вопрос, потому что я знаю такие утилиты С++ 11 как std::remove_reference
, но я не знаю, регулярно ли используются утилиты, связанные с ссылкой, такие как std::remove_reference
, на С++ 11, чтобы избежать необходимость в правилах сбрасывания ссылок или их использование в сочетании с правилами сбрасывания ссылок.