C++標準化委員会の文書: P0390R0-P0399R0
P0390R0: ISO/IEC JTC1/SC22/WG21 p0390r0
shared_ptrにムーブ対応のキャスト関数を追加する提案。
クラスBaseと、Baseから派生するクラスDerivedがあり、Derivedのオブジェクトを指し示すshared_ptr<Base>を返す関数get_ptr()があるとする。この時、shared_ptr<Base>からshared_ptr<Derived>に安全に型変換できる。
class Base { } ;
class Derived : public Base { } ;
std::shared_ptr<Base> get_ptr() ;
std::shared_ptr<Derived> p = std::static_pointer_cast<Derived>( get_ptr() ) ;
問題は、std::static_pointer_castは、引数としてconstなlvalueリファレンスしか取らないため、shared_ptrの参照カウンターのアトミックなインクリメントとデクリメントが発生する。
そこで、static_pointer_castにrvalueリファレンスの引数を取り、ムーブに対応させる。
P0391R0: P0391R0: Introducing the term "templated entity"
templated entity(テンプレート化されたエンティティ)という用語を定義する提案。
templated entityとは、テンプレートと、テンプレートの中で宣言されたエンティティのことだ。
[PDF] P0392R0:Adapting string_view by filesystem paths
filesystemをstring_viewに対応させる提案。
P0393R3: Variant: relational operators.
どこぞの大統領候補が言いそうな題名の文書。
内容は、variantの各種比較演算子を、variantの内部の値による比較にデリゲートする提案。
P0394R4: Hotel Parallelifornia: terminate() for Parallel Algorithms Exception Handling
タイトルはHotel Californiaへのリファレンス。冒頭に、歌詞の最後の部分を改変した、"You can throw any time you like, but the exceptions can never leave."と書かれている。
並列アルゴリズムに渡した要素アクセス関数が例外を投げた時は、投げられた複数の例外がstd::exception_listに格納されて返されるという仕様になっている。しかし、実行ポリシーがpar_unseqの時だけはstd::terminate()を呼び出すとなっており、一貫性がない。
これを考えるに、一律std::terminate()を呼び出すことで統一したほうがよい。そのほうが生成されるコードも簡単になるし、exception_listに持ち上がっている数々の問題への対処も不要になる。
という変更をする提案。
P0396R0: P0396R0: C++ Concepts Active Issues List (Snapshot of Revision 4)
コンセプトに対する問題集
P0397R0: C++ Standard Library Priority 1 Issues Resolved Directly In Oulu
Oulu会議で解決されたライブラリ問題の一覧
P0398R0: P0398R0: Core issue 1518: Explicit default constructors and copy-list-initialization
デフォルトコンストラクターがexplicitか、継承コンストラクターを使っているクラス型は、アグリゲートから外すよう文面を変更する提案。
厳密には意味の変更になるが、文面の解釈揺れや間違いを修正する変更。
ドワンゴ広告
ドワンゴは本物のC++プログラマーを募集しています。
CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0