From 3f18cacbc1e353ea59086e65760ddafacc846bc1 Mon Sep 17 00:00:00 2001 From: "YIN, Gang" <1246410+yingang@users.noreply.github.com> Date: Tue, 1 Mar 2022 10:49:19 +0800 Subject: [PATCH] Update item3.md update formatting in lvalue-reference-to-non-const and lvalue-references-to-const --- 1.DeducingTypes/item3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.DeducingTypes/item3.md b/1.DeducingTypes/item3.md index 228d766..d65434e 100644 --- a/1.DeducingTypes/item3.md +++ b/1.DeducingTypes/item3.md @@ -104,7 +104,7 @@ decltype(auto) myWidget2 = cw; //decltype类型推导 template decltype(auto) authAndAccess(Container& c, Index i); ```` -容器通过传引用的方式传递非常量左值引用(lvalue-reference-to-non-`const`),因为返回一个引用允许用户可以修改容器。但是这意味着在不能给这个函数传递右值容器,右值不能被绑定到左值引用上(除非这个左值引用是一个const(lvalue-references-to-`const`),但是这里明显不是)。 +容器通过传引用的方式传递非常量左值引用(lvalue-reference-to-non-**const**),因为返回一个引用允许用户可以修改容器。但是这意味着在不能给这个函数传递右值容器,右值不能被绑定到左值引用上(除非这个左值引用是一个const(lvalue-references-to-**const**),但是这里明显不是)。 公认的向`authAndAccess`传递一个右值是一个[edge case](https://en.wikipedia.org/wiki/Edge_case)(译注:在极限操作情况下会发生的事情,类似于会发生但是概率较小的事情)。一个右值容器,是一个临时对象,通常会在`authAndAccess`调用结束被销毁,这意味着`authAndAccess`返回的引用将会成为一个悬置的(dangle)引用。但是使用向`authAndAccess`传递一个临时变量也并不是没有意义,有时候用户可能只是想简单的获得临时容器中的一个元素的拷贝,比如这样: ````cpp