================
@@ -3925,13 +3925,20 @@ def LifetimeCaptureByDocs : Documentation {
 parameter or implicit object parameter indicates that that objects that are 
referred to
 by that parameter may also be referred to by the capturing entity ``X``.
 
-By default, a reference is considered to refer to its referenced object, a
-pointer is considered to refer to its pointee, a ``std::initializer_list<T>``
-is considered to refer to its underlying array, and aggregates (arrays and
-simple ``struct``\s) are considered to refer to all objects that their
-transitive subobjects refer to.
+By default:
----------------
usx95 wrote:

We are talking about the parameter and not the capturing entity X. Added more 
details to the docs.

The entity to which the reference refer to is important to outlive the 
capturing entity.

For example,
`void foo(const std::string_view& s [[clang::lifetime_capture_by(x), X &x)`
1. In `foo(std::string(), x)`, the param `s` refers to a temporary 
`std::string()`.
2. In `std::string local; foo(std::string_view(local), x)`, the param `s` 
refers to `local`.

Does it make sense now ? PTAL.

https://github.com/llvm/llvm-project/pull/115921
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to