2016-09-08

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

2 comments:

  1. ほしかったようなほしくなかったようなシェアードポインタのキャスト関数。
    &&取らなかったらちゃんとアップキャスト時にカウンタを増やしてくれるんだったらかなり有用でしょうか??
    ん?サンプルあってますか?

    ReplyDelete
  2. P0390R0は以前江添さんにAsk.fmで質問した内容ですね。
    意図はくみ取ってもらえませんでしたが。

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.