本の虫

著者:江添亮
ブログ: http://cpplover.blogspot.jp/
メール: boostcpp@gmail.com
Twitter: https://twitter.com/EzoeRyou
GitHub: https://github.com/EzoeRyou

アマゾンの江添のほしい物リストを著者に送るとブログ記事のネタになる

筆者にブログのネタになる品物を直接送りたい場合、住所をメールで質問してください。

2014-11-post-Urbanaのレビュー: N4260-N4269

どうも欠番が多い。

N4261: Proposed resolution for Core Issue 330: Qualification conversions and pointers to arrays of pointers

多次元ポインターでconstを付け加える型変換について規定する文面がないため、以下のコードが違法になってしまう問題を修正する提案


  int main()
  {
     double *array2D[2][3];
  
     double       *       (*array2DPtr1)[3] = array2D;     // 合法
     double       * const (*array2DPtr2)[3] = array2DPtr1; // 合法
     double const * const (*array2DPtr3)[3] = array2DPtr2; // 違法
  }

規格の文面上にこの例についてカバーする箇所がないため、このようなことになってしまっている。

N4262: Wording for Forwarding References

テンプレート仮引数Tで実引数T &&や、auto &&は、どんな型でも受け取ることができる。この性質に対して、Fowarding Referenceという名前を付ける提案の文面案。

N4263: Toward a concept-enabled standard library

Concept Lite TSがほぼ完成したので、さっそく標準ライブラリをConceptに対応させたい。その対応させる際の方針を示した論文。

多少の非互換性は許容する方針らしい。たとえば、暗黙の型変換とか。

N4265: Transactional Memory Support for C++: Wording (revision 3)

トランザクショナルメモリーの文面案

この前のC++WG JPの会議では、現在提案中のトランザクショナルメモリーは、ハードウェアネイティブのトランザクショナルメモリーに落とし込める設計ではないので、何を考えて設計したのかよくわからない。全然実用的ではないという意見であった。

N4266: Attributes for namespaces and enumerators

名前空間とenumeratorにattributeを指定できる文法を追加する提案。これまでは文法が規定されていなかったので、deprecatedを指定できなかった。

namespace [[deprecated("lib_v1 is deprecated. Use lib_v2 instead.")]] lib_v1 { }

enum struct Option { safe, fast, super_fast, dangerously_fast [[deprecated("It has issues. Don't use it")]] } ;

N4267: Adding u8 character literals

charのオブジェクトひとつで表現できる文字に限ったUTF-8文字リテラルを追加する提案の文面案。

用途としては、ASCII文字をリテラルで表現できる。


char c = u8"c" ;

N4268: Allow constant evaluation for all non-type template arguments

非型テンプレート仮引数に配列からポインターへの型変換や関数からポインターへの型変換などを許容する提案の文面案

今回は欠番が多い。N4269のタイトルは、「まともなコンパイラーはatomicを最適化しない」というもので、興味深いのだが、欠番となっている。

ドワンゴ広告

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

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

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

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