BT

C++17のフィーチャーリストが完成、レビューに入る

| 作者: Sergio De Simone フォローする 14 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2016年7月13日. 推定読書時間: 2 分 |

原文(投稿日:2016/07/06)へのリンク

フィンランドのオウルにおけるミーティングで、ISO C++委員会はC++17のフィーチャーリスト定義を完了した。ミーティングでは、多数の新たな言語機能とライブラリ機能が承認された。これにはconstexpr iftemplate <auto>、構造化束縛などが含まれる。

委員会メンバーのJens Weller氏によると、これでフィーチャーリストはクローズされ、レビュー期間が始まるという。

次の2回のミーティングでは、主に、各国機関によってなされたレビュー、フィードバック、課題について扱います。標準に新たなものを追加することはありませんが、マイナーもしくはメジャーな変更が加わる可能性があります。

オウルでの委員会ミーティングでC++17に追加されたフィーチャーのうち、Weller氏は以下に注目している。

  • std::variant: 安全で汎用のスタックベースの判別共用体コンテナ。

  • if constexpr(expression): コンパイル時ifのC++バージョンとみなせる。

    この機能によって様々な可能性が開かれるとHerb Sutter氏は強調する。例えば、テンプレートの特殊化をすることなく、本体内にアルゴリズムの特殊ケースをすべて含んだ関数テンプレートが書けるなど。

  • Template auto: autoを使って非型テンプレート引数を宣言できる。例えば、以下のように書ける。

      template <auto value> void f() { }
      f<10>();        // int だと推論
    
  • 構造化束縛: タプルから複数の変数を宣言して初期化できる。

    tuple<T1,T2,T3> get_tuple();
    auto [a , b , c] = get_tuple();
    
  • ifswitchにおける変数宣言: すでにforループで許されているのと同様にする。

    map<int,string> mymap;
    if (auto result = mymap.insert(value); result.second) {
    // 成功時の処理を入れる、resultはこのブロックで有効
    use(result.first);  // ok
    // ...
    }
    

加えて、Sutter氏は注目する価値のある新機能について、次のものに触れている。

上記リストは、先日の委員会ミーティングで新たに承認された機能しか含んでいない。C++17標準に新たに含まれるフィーチャーリストはもっと長い。レビュープロセスの終了時に新しい標準に何が含まれるのか、その全体像を把握するには、このStack Overflowスレッドが役立つだろう。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT