コンセプト の検索結果:
…れること」を要求するコンセプトHasConstantSizeの定義例。requires式(requires-expression)中の typename type-name; 構文(type-requirement)は、type-name が有効な型であることを表明する。例示コードのように、クラステンプレート特殊化に対しては完全型が要求されない。*1 // C++2a template<auto> struct require_constant; template<class…
…ジェクト。 最初に「コンセプトによる型制約を検査」してから「ADLによって適切な関数オーバーロードを検索」するための仕組み。 C++17現在の関数オーバーロード方式では、[A]誤って利用されるリスクが高く、[B]コンセプトを用いた型制約を強制できない という問題がある。 CPO呼び出しの引数型は、CPOが要求するコンセプトを満たす。引数型リストがコンセプトを満たさない場合は、オーバーロード解決候補から除外される。 CPO呼び出しの戻り値型は、CPOに対して定めたコンセプトを満…
…に向けて採択された、コンセプト(concept)関連の短縮構文についてメモ。C++コンセプト概略ついては id:yohhoy:20170904 を参照のこと。本記事の内容は P1141R2 Yet another approach for constrained declarations に基づく。要約: autoキーワードによる関数テンプレート定義が可能。“template-less Function Template” 現行autoキーワードを用いた型推論にて、コンセプト…
…に向けて採択された コンセプト(concept) についてメモ。*1本記事の内容は(PDF)P0734R0 Wording Paper, C++ extensions for Conceptsに基づく。要約: 新しいキーワード:concept, requires 新しい構文:コンセプト定義, requires式, requires節 コンセプト(concept) == テンプレートパラメータに対する制約(constraint) コンセプト(concept) != 型(type…
…関数テンプレートへのコンセプト制約指定が主目的だが、同構文の自然な拡張(コンセプト制約の省略形)として導入される。id:yohhoy:20190111 参照。2017-09-02追記:発行済み ISO/IEC TS 19217:2015(Concepts TS) には同仕様が含まれるが、C++2aに向けたP0696R0にて abbreviated function template はConcepts仕様から削除された。C++2aでは(PDF)P0734R0を統合予定となって…
…tomic<T>)のコンセプトを機能拡張し、条件変数(condition variable)のような条件待機/通知機能を追加したもの。*1 store 操作は、synchronic オブジェクト(≒atomic変数)への値代入に加えて、同オブジェクト上で待機しているスレッドへのブロック解除通知を行う。 条件付き load 操作 load_when_not_equal, load_when_equal や条件付き待機操作 expect_update は、同 synchronic…
… Lockable コンセプトを満たすクラスが利用可能。template<typename T, typename Lockable = mutex> class synchronized_value; *2:atomic<T> 変数に対する操作は、最適な機械語命令へコンパイルされると期待できる。ただし、処理系によっては atomic<T> 内部実装でミューテックスが使用される可能性はある。 *3:概念的には ”構築中オブジェクトとコピー/ムーブ元オブジェクトの両内部ロック獲…
…task_groupコンセプトが提案されている。なお、同名クラスはIntel TBB(Threading Building Blocks)およびMicrosoft PPL(Parallel Pattern Library)でも提供される。2014-01-20追記:N3711で言及されるtask_groupコンセプトは、(PDF)N3832 Task Regionにて task_region / task_run / task_wait へと分解されている。task_group…
…は個々の有用な並行性コンセプトをパッケージ化しています:戻り値のためにstd::futureを提供し、対となるstd::promise側をラップします。またタスクを同期的に実行するオプションも提供します。(訳注:std::asyncの基本についてはid:yohhoy:20120203を参照のこと。)ただしタスクは、並行プログラミングにおいて若干異なるニュアンス:タスクベース並列の基本部品となります。そしてC++11のタスクはこの意味においては不十分なのです。 タスクベース並列…
…riterMutexコンセプトには適合せず、tbb::spin_rw_mutexやtbb::queuing_rw_mutex等とは異なるインタフェースとなっている。 関連URL (PDF) Intel(R) Threading Building Blocks Reference Manual, Rev.1.28, 9.3 PPL CompatibilityとAppendix B PPL Compatibility *1:ロック済みオブジェクトに対して再びロック操作を行った *…