2014-12-05

2014-11-post-Urbanaのレビュー: N4250-N4259

N4250: WG21 2014-10-24 Telecon Minutes

2014年10月24日に行われた電話会議の議事録。

N4251: WG21 2014-11 Urbana Minutes
[PDF注意] N4252: PL22.16 2014-11 Urbana Minutes

2014年11月の3-8日に行われたUrbana会議の議事録。

N4253: Language Support for Runtime Contract Validation (Revision 9)

高級なassertライブラリを追加する提案。

N4254: User-Defined Literals for size_t (and ptrdiff_t)

size_tとptrdiff_tのユーザー定義リテラルを<cstddef>に追加する提案。

#include <cstddef>
int x = 0 ; // int
int s = 0z ; // std::size_t
int p = 0t ; // std::ptrdiff_t

整数リテラルのデフォルトの型はintである。int型は符号付き整数型である。size_tやptrdiff_tは符号なし整数型である。size_tやptrdiff_tを扱うときに、整数リテラルをそのまま書いて演算や比較をしてしまうと、符号を混ぜて処理することになり、思わぬ誤りにつながる。そのため、型安全のためには、size_tやptrdiff_t型のリテラルがほしい。

N4255: Proposed resolution for US104: Allocator-aware regular expressions (rev 3)

正規表現ライブラリをアロケーターに対応させる提案。

Delimited iterators (Rev. 4)

本当の意味でのデリミターをサポートするostream_joinerを追加する提案。

ostream_iteratorに指定するデリミターは、実はサフィックスである。

vector<int> v = {1, 4, 6};
cout << "(";
copy(v.begin(), v.end(), ostream_iterator<int>(cout, ", "));
cout << ")"; // Oops! Prints (1, 4, 6, )

最後の要素の後にもデリミターが出力されてしまう。正しくデリミターを付加する、ostream_joinerを新たに追加する提案。

vector<int> v = {1, 4, 6};
cout << "(";
copy(v.begin(), v.end(), std::make_ostream_joiner(cout, ", "));
cout << ")"; // Prints (1, 4, 6) as desired

N4258: Cleaning up noexcept in the Library (Rev 3)

ムーブコンストラクターなど、標準ライブラリでnoexceptを必須にした関数でも、例外を投げたくなる状況がある。たとえばデバッグモードなど。そのため、規格の文面を、「例外を投げないことが推奨される」という文面に変える提案。

N4259: Wording for std::uncaught_exceptions

現在まだキャッチされていない例外の数を返すint std::uncaught_exceptions() noexceptの文面。

ドワンゴ広告

この記事はドワンゴ勤務中に書かれた。

社内で勃発したきのこたけのこ戦争はたけのこ陣営が勝利したようだ。解せないことだ。

ドワンゴは本物のC++プログラマーを募集しています。

採用情報|株式会社ドワンゴ

CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0

No comments: