BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 最新C++への注力を強めるVisual Studio “14"

最新C++への注力を強めるVisual Studio “14"

原文(投稿日:2014/06/12)へのリンク

Visual Studio "14"最初のプレビュー版には,次期リリースに追加予定のC++ 11/14準拠に関する詳細が含まれている。今回,MicrosoftシニアデベロッパのStephen T. Lavavej氏が,"14"のC++14サポートレベルに関して,さらに詳細な解説をしてくれた。

氏の解説は,VS2013RTM以降に実施された変更を特に取り上げたもので,おもに3つのカテゴリ – STL(Standard Template Library)に対する追加,修正,非互換変更 – をカバーする。Lavavej氏によると,C++ STLに関する"14"の実装は,おもに4人の開発者 – 氏自身,P.J.Plauger氏,Artur Laksberg氏,James McNellis氏によって開発されたものだという。これは注目すべき点だ。

"14"で追加されるSTLサポートはすべて,C++14仕様だけではなく,もうひとつの技術仕様書(Filesystem "V3")にも基づいている。

  • N3642 <chrono>/<string> ユーザ定義リテラル(UDL)
  • N3644 Nullフォワードイテレータ
  • N3654 quoted()
  • N3657 不均一連想検索
  • N3658 integer_sequence
  • N3668 exchange()
  • N3670 get<T>()
  • N3671 デュアルレンジequal()/is_permutation()/mismatch()
  • N3779 <complex> UDL
  • N3887 tuple_element_t
  • N3940 Filesystem "V3" 技術仕様

同じくC++14の一部であるLibrary Issue Resolutionのいくつか(1ダースをはるかに上回る数)が,仕様の補完として参照されている。"14"には,現行のSTLに対する修正も含まれている。<chrono>によるクロックサポートの改善,<atomic>のコンパイル時の正確性の改善(X86アセンブリコードも排除された),<locale>に以前から(2006年以来)存在したバグの修正など,いくつかの部分が改善された。

生成されるオブジェクトファイルの効率性が向上し,VS2013での同等処理の出力に比べてかなり小さくなった。正規表現サポートにもさまざまな改良が加えられて,以前よりも安定した実装が提供される。

gets()のユーザは,C++11およびC++14でそれが廃止されたことに注意が必要だ。従ってVisual Stduioでは,gets()<stdio.h>にはによってCRTでは提供されるものの,STLの<cstdio>には入らない。

すべての変更の結果としてLavavej氏が指摘するのは,後方互換性が損なわれている領域が存在することだ。その中には,FilesystemのV3インターフェースによる(V2に対する)変更や,_USE_32_BIT_TIME_Tの使用がコンパイル時に警告となる点などが含まれている。浮動小数点数の解析に関するiostreamの既知のバグが残っているが,これは開発中のままだ。

すべてを詳細に知りたい読者は,Lavavej氏の記事を参照してほしい。

この記事に星をつける

おすすめ度
スタイル

BT