template<class T>
concept queryable = destructible<T>;
概要
queryable
は、型T
がクエリ可能オブジェクトの制約を満たすことを表す説明専用のコンセプトである。
クエリ可能オブジェクト(queryable object)
クエリ可能オブジェクトは、クエリオブジェクトをキーとして対応する値を保持する、読み取り専用のKey/Valueデータ構造とみなせる。
execution::env<>{}
: 空のクエリ可能オブジェクトexecution::prop(q, v)
: キーq
と対応値v
を保持する最小のクエリ可能オブジェクトexecution::env{...}
: 複数のKey/Valueを保持するクエリ可能オブジェクトqueryable
コンセプトを満たすユーザ定義クラスのオブジェクト
実行制御ライブラリでは、下記のオブジェクトがクエリ可能オブジェクトとされる。
- Senderに関連付けられた属性(attributes)オブジェクト(
execution::get_env
で取得) - Receiverに関連付けられた環境(environment)オブジェクト(
execution::get_env
で取得) - Schedulerオブジェクト自身
クエリオブジェクト(query object)
クエリオブジェクトは、クエリ可能オブジェクトに対する問い合わせ(query)を行うカスタマイゼーションポイントオブジェクトである。
説明用のクエリオブジェクトq
、クエリ可能オブジェクトenv
、引数パックargs
としたとき
- 問い合わせ式
q(env, args...)
は、void
型であってはならない。 - 問い合わせ式
q(env, args...)
は、クエリオブジェクトや引数を変更せず、等しさを保持(equality-preserving)する。 - 式
env.query(q, args...)
が適格であれば、問い合わせ式q(env, args...)
と等価である。
モデル
説明用のenv
をEnv
型のオブジェクトとする。
呼び出し可能オブジェクトq
と部分式パックargs
に対して、requires { q(env, args...) }
がtrue
であれば、q(env, args...)
がq
に課されるセマンティック要件を満たす場合に、Env
はqueryable
のモデルである。
備考
Senderに関連付けられたクエリ可能オブジェクトは「属性(attributes)」と呼ばれるが、実行制御ライブラリの仕様記述ではReceiverの「環境(environment)」と合わせてEnv
型や識別子名env
として包括的に言及される。
バージョン
言語
- C++26