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
ほしかったようなほしくなかったようなシェアードポインタのキャスト関数。
ReplyDelete&&取らなかったらちゃんとアップキャスト時にカウンタを増やしてくれるんだったらかなり有用でしょうか??
ん?サンプルあってますか?
P0390R0は以前江添さんにAsk.fmで質問した内容ですね。
ReplyDelete意図はくみ取ってもらえませんでしたが。