diff --git a/CPP11.md b/CPP11.md index a5dcefa..0ec8212 100644 --- a/CPP11.md +++ b/CPP11.md @@ -108,8 +108,9 @@ f(x); // deduces as f(int&) int& y = x; f(y); // deduces as f(int& &&) => f(int&) -int&& z = 0; -f(z); // deduces as f(int&& &&) => f(int&&) +int&& z = 0; // NOTE: `z` is an lvalue with type `int&&`. +f(z); // deduces as f(int&& &) => f(int&&) +f(std::move(z)); // deduces as f(int&& &&) => f(int&&) ``` See also: [`std::move`](#stdmove), [`std::forward`](#stdforward), [`rvalue references`](#rvalue-references). diff --git a/README.md b/README.md index 4407e9a..985c994 100644 --- a/README.md +++ b/README.md @@ -696,6 +696,13 @@ void f(T&& t) { int x = 0; f(0); // deduces as f(int&&) f(x); // deduces as f(int&) + +int& y = x; +f(y); // deduces as f(int& &&) => f(int&) + +int&& z = 0; // NOTE: `z` is an lvalue with type `int&&`. +f(z); // deduces as f(int&& &) => f(int&&) +f(std::move(z)); // deduces as f(int&& &&) => f(int&&) ``` See also: [`std::move`](#stdmove), [`std::forward`](#stdforward), [`rvalue references`](#rvalue-references).