From Jason Turner

[exec.queryable.general]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp95j3clv7/{from.md → to.md} +27 -0
tmp/tmp95j3clv7/{from.md → to.md} RENAMED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### General <a id="exec.queryable.general">[[exec.queryable.general]]</a>
2
+
3
+ A *queryable object* is a read-only collection of key/value pair where
4
+ each key is a customization point object known as a *query object*. A
5
+ *query* is an invocation of a query object with a queryable object as
6
+ its first argument and a (possibly empty) set of additional arguments. A
7
+ query imposes syntactic and semantic requirements on its invocations.
8
+
9
+ Let `q` be a query object, let `args` be a (possibly empty) pack of
10
+ subexpressions, let `env` be a subexpression that refers to a queryable
11
+ object `o` of type `O`, and let `cenv` be a subexpression referring to
12
+ `o` such that `decltype((cenv))` is `const O&`. The expression
13
+ `q(env, args...)` is equal to [[concepts.equality]] the expression
14
+ `q(cenv, args...)`.
15
+
16
+ The type of a query expression cannot be `void`.
17
+
18
+ The expression `q(env, args...)` is equality-preserving
19
+ [[concepts.equality]] and does not modify the query object or the
20
+ arguments.
21
+
22
+ If the expression `env.query(q, args...)` is well-formed, then it is
23
+ expression-equivalent to `q(env, args...)`.
24
+
25
+ Unless otherwise specified, the result of a query is valid as long as
26
+ the queryable object is valid.
27
+