C++

C++17 今、MSVCがアツい!

  • このエントリーをはてなブックマークに追加
  • Pocket

MSVC, VS 2017 15.7 で C++17 対応完了

Visual C++ Team Blogによると、Visual Studio 2017 15.7の時点でC++17に対応完了したように書いてある。

C++17に対応完了したC++の処理系として一番乗りを果たしたようだ。

しかも、しれっとTwo-Phase name lookupが実装されている(なおバグ)。

  • parallel STL
  • memory_resource
  • optional
  • variant
  • string_view

などの新ライブラリ使えるのはとても楽で嬉しい。

Constexpr IfやStructured Binding Declaration、Fold expressionsなど、楽しい言語機能も満載です。

ライブラリアンとしては範囲 for ループの制限緩和が結構でかいです。

 

バグはかなりあるもののリリースがかなり速いため、どんどん良くなっている。

今C++17で遊ぶならMSVCはなくはないかな、もしかしたらありかな。

いつものことながら、インテリセンスが対応できてないので警告だらけ。

インテリセンスは捨てよう。

 

ほぼほぼ使い物にならない機能リスト

バグレポを眺めると、膨大なバグがあることがわかる。

そのなかでも、やばいレベルのバグがある。

そのせいでほぼほぼ使い物にならない機能を3つあげる。

15.7.2現在情報でっす。

Lambda Capture of *this by Value as [=,*this]

lambda内部でthis->すると、アロー演算子がないというコンパイルエラーになる。

ガバガバやんけ。アクセスせずにどうしろっちゅうねん。

バグレポ

Make exception specifications be part of the type system

例外指定を非型テンプレートにすると、コンパイラ内部エラーになる。

無例外保証の関数ポインタに無例外保証なしの関数ポインタを代入はできない。

そこはちゃんと実装できてる。

でも、noexcept( IsNoexcept )って感じで非型テンプレートパラメータにしたいんじゃあ。

バグレポ

Guaranteed copy elision

これが一番ひどい、全く実装できてない。

15.7.2でまだ動いていない。

copy elisionを期待してnon-copyable and non-movable なクラスの即値を返す関数を書いただけでコンパイルエラーになる。

使わなくてもだ。

なーにが対応しましただ?ふざけてんのか?

しかし、Developer Community を見る限り、修正済みで リリース保留中のようだ。

 

最後に

結局、MSVCってガバガバで発狂するよね。

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください