Files
2025-10-25 03:02:53 +03:00

63 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[exec.queryable.general]
# 33 Execution control library [[exec]](./#exec)
## 33.2 Queries and queryables [[exec.queryable]](exec.queryable#general)
### 33.2.1 General [exec.queryable.general]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L115)
A [*queryable object*](#def:object,queryable "33.2.1General[exec.queryable.general]") is
a read-only collection of key/value pair
where each key is a customization point object known as a [*query object*](#def:query_object "33.2.1General[exec.queryable.general]")[.](#1.sentence-1)
A [*query*](#def:query "33.2.1General[exec.queryable.general]") is an invocation of a query object
with a queryable object as its first argument and
a (possibly empty) set of additional arguments[.](#1.sentence-2)
A query imposes syntactic and semantic requirements on its invocations[.](#1.sentence-3)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L124)
Let q be a query object,
let args be a (possibly empty) pack of subexpressions,
let env be a subexpression
that refers to a queryable object o of type O, and
let cenv be a subexpression referring to o such that decltype((cenv)) is const O&[.](#2.sentence-1)
The expression q(env, args...) is equal to ([[concepts.equality]](concepts.equality "18.2Equality preservation"))
the expression q(cenv, args...)[.](#2.sentence-2)
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L134)
The type of a query expression cannot be void[.](#3.sentence-1)
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L137)
The expression q(env, args...) is
equality-preserving ([[concepts.equality]](concepts.equality "18.2Equality preservation")) and
does not modify the query object or the arguments[.](#4.sentence-1)
[5](#5)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L142)
If the expression env.query(q, args...) is well-formed,
then it is expression-equivalent to q(env, args...)[.](#5.sentence-1)
[6](#6)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L146)
Unless otherwise specified,
the result of a query is valid as long as the queryable object is valid[.](#6.sentence-1)