Skip to content

Latest commit

 

History

History
30 lines (22 loc) · 1.03 KB

File metadata and controls

30 lines (22 loc) · 1.03 KB

Reference collapsing rules

  • T& & -> T&
  • T& && -> T&
  • T&& & -> T&
  • T&& && -> T&&

Reference collapsing

Zwijanie referencji odbywa się gdy kompilator generuje instancje szablonów

template <typename T>
void f(T & item) {}    // takes item always as an l-value reference

void f(int& & item);   // passing int& as a param, like f(a) -> f(int&)
void f(int&& & item);  // passing int&& as a param, like f(5) -> f(int&)
template <typename T>
void g(T && item) {}   // takes item as a forwarding reference

void g(int& && item);  // passing int& as a param, like g(a) -> f(int&)
void g(int&& && item); // passing int&& as a param, like g(5) -> f(int&&)