nakameguro_feature.cpp vol.16

日程: 2019/02/21(木) 19:30 〜 20:45

会場: バンタンゲームアカデミー東京校 東京都目黒区中目黒2-10-17

主催: 遥佐保

ハッシュタグ :#nakamecpp
募集内容

参加枠1: 無料

イベントの説明

C++17の新機能について、復習&予習をしませんか?

  • C++17が出たみたいだけど、何が新しくなったのが全然追えてない…><
  • 色んな機能が入ってるみたいだけど、本当に抑えとくべき機能やライブラリって何なんだろ?
  • 他の人がどう考えているか知りたい…

こんな人は、一度、この集まりに参加してみてください
質疑応答・ディスカッション形式で進める予定ですが、無言の方もOKです

特に書籍などを持参する必要はありません

ネタ振りとして
進行役が、C++17の基礎的な機能やライブラリの話題を、参加者に提供します

参加者は
それはどんな場面で役立ちそうなのか?
誰が使いそうな機能なのか?
などなど、自由に意見交換してもらえればと思います
(聞くだけでも、もちろんOKです)

今回も引き続き

C++17の新機能とライブラリ機能の確認(下記の赤字分)

です

以下に入っていなくても、テーマに沿った内容であれば話題OKです


C++17の言語系新機能

変数・データ構造関係

  • 十六進浮動小数点数リテラル
  • インライン変数(vol.4)
  • 構造化束縛(vol.4)
  • 波括弧初期化の型推論の新規則(vol.4)
  • [[maybe_unused]]属性(vol.6)
  • [[nodiscard]]属性(vol.6)
  • 値のコピー省略を保証(vol.4)
  • 厳密な式の評価順(vol.4)
  • 参照メンバをもつクラスの置き換え
  • enum class変数の初期値として整数を指定する際の規則を調整

制御構文

  • if文とswitch文の条件式と初期化を分離(vol.4)
  • [[fallthrough]]属性(vol.6)
  • 範囲 for ループの制限緩和

ラムダ式

  • ラムダ式での*thisのコピーキャプチャ

テンプレート

  • 畳み込み式(vol.4)
  • テンプレートテンプレートパラメータにtypenameキーワードの使用を許可
  • クラステンプレートのテンプレート引数推論(vol.4)
  • 非型テンプレートパラメータのauto宣言(vol.4)
  • 全ての非型テンプレート引数の定数式評価を許可
  • 変数テンプレートのデフォルトテンプレート引数を許可

定数式

  • static_assertのメッセージ省略を許可(vol.4)
  • constexprラムダ(vol.4)
  • if constexpr文(vol.4)

名前空間

  • 入れ子名前空間の定義(vol.4)
  • 名前空間と列挙子への属性付加を許可(vol.6)
  • using宣言のパック展開

例外

  • 例外仕様を型システムの一部にする(vol.6)
  • 非推奨だった古い例外仕様を削除(vol.6)

属性

  • [[fallthrough]]属性(vol.6)
  • [[maybe_unused]]属性(vol.6)
  • [[nodiscard]]属性(vol.6)
  • 名前空間と列挙子への属性付加を許可(vol.6)
  • 属性の名前空間指定に繰り返しをなくす(vol.6)
  • 不明な属性を無視する(vol.6)

プリプロセッサ

  • __has_include

機能の削除

  • トライグラフの削除(vol.4)
  • 非推奨だったregisterキーワードを削除
  • 非推奨だったbool型に対するインクリメント演算子を削除
  • 非推奨だった古い例外仕様を削除(vol.6)

小さな変更

  • 更新された定義済みマクロ
  • 機能テストマクロ
  • noexcept付きのラムダ式から変換する関数ポインタにnoexceptを付加する
  • UTF-8文字リテラル

その他

  • std::*_v(vol.4)
  • over-aligned型対応new(vol.4)

C++17のライブラリ系新機能

新ライブラリ

  • Mathematical special functions
  • Filesystem (vol.15)
  • Parallelism(vol.5)
  • New algorithms
    (for_each_n, reduce, transform_reduce, exclusive_scan, inclusive_scan, transform_exclusive_scan, transform_inclusive_scan)
  • New type: string_view (and basic_string_view) (vol.14)
  • New type: any (vol.10)
  • New class template: variant (vol.11)
  • New class template: optional(vol.12/13)
  • invoke (vol.16)
  • is_invocable, is_invocable_r, invoke_result (vol.5)
  • Elementary string conversions
  • Alias template void_t (vol.6)
  • Alias template bool_constant
  • Logical operation metafunctions
  • Traits for SFINAE-friendly swap
  • Trait is_aggregate
  • Trait has_unique_object_representations
  • as_const (vol.6)
  • Non-member size, data, empty
  • clamp
  • gcd and lcm
  • Class shared_mutex (vol.8)
  • Interference sizes (hardware_{con,de}structive_interference_size) (vol.8)
  • Tuple apply(vol.5)
  • Construction from tuples
  • Universal negator not_fn(vol.5)
  • Memory resources (vol.9)
    (synchronized_pool_resource, unsynchronized_pool_resource, monotonic_buffer_resource)
  • A polymorphic allocator (vol.9)
    std::pmr::vector<T> = std::vector<T, polymorphic_allocator<T>>
  • Searcher functors

既存ライブラリが修正されたもの

  • uncaught_exceptions() (vol.6)
  • Improved insertion for unique-key maps (vol.7)
  • Return type of emplace
  • Splicing maps and sets (vol.7)
  • Non-const string::data
  • A variadic version of lock_guard called scoped_lock (vol.8)
  • Variable templates for traits
  • atomic::is_always_lock_free (vol.8)
  • shared_ptr for arrays (vol.13)
  • shared_ptr::weak_type (vol.13)
  • std::enable_shared_from_this (vol.13)
  • Three-dimensional hypotenuse
  • Further uninitialized algorithms
  • Incomplete type support for allocators
  • Changes to <chrono>
  • Constexpr for char_traits
  • Improving pair and tuple
  • Changes to common_type

Deprecate

  • shared_ptr::unique (vol.8)

Temporarily discourage

  • memory_order_consume (vol.8)

その他

  • C++ refers to C11
  • Reserved namespaces
  • C library synopses
  • Term “forwarding reference”
    Term “default member initializer”
    Term “templated entity”
    Term “contiguous iterator”
  • Change “random number generator” to “random bit generator”

※ 参考
https://cpprefjp.github.io/lang/cpp17.html
https://isocpp.org/files/papers/p0636r0.html


日ごろ思っている疑問をぶつけてもいいですし
出た話題だけでも聞きたい…などもOKです

以降、数回かけて、C++17を抑えていく予定です

自分の興味のある切り口で、C++について話し合いましょう!

<対象者など>

次のような人か、この集まりに向いています

  • C++が好きで、新しく情報収集をしたいが、なかなか実践に移せていない
  • みんながどうやってコードを書いているか気になる
  • C++にまつわる業務の悩みがある
  • C++についての新機能について、実はよく分かっていない
  • 出来ればC++を世の中に広めたい

逆に、以下のような方は向いていません

  • C++が好きではない

<やること>

  • テーマにまつわるC++の話
  • ディスカッション
  • 質疑応答
  • C++について会話する
  • C++の会話を聞く(聞くだけ、無言でもOK)

<やらないこと>

  • 発表形式の資料
  • 参加者の方に発言を強要すること
  • 確実な回答
    (ここで出た話題はあくまで個人の意見なので、確実性や何かを保証するものではありません)
  • 営利目的の何か
  • C++に関係のない話題

<場所>
〒153-0061
東京都目黒区中目黒2-10-17
バンタンゲームアカデミー東京校

最寄駅は地下鉄日比谷線/東急東横線 中目黒です


<注意>

  • 教室では飲食禁止となります
    ※ペットボトルなど飲み口の閉まるもののみ可
  • 他の授業や学生の迷惑にならないように、配慮をお願いします
  • 20:45終了、21:00までに現状復帰し、完全撤収にご協力下さいm(__)m

<スケジュール>

19:15~19:30 開場

19:30~20:30
進行役: std::invoke の紹介:Flast @Flast_RO

20:30〜20:45 お悩み雑談室
C++に関する相談、雑談などがあれば持ってきてください(テーマ外でも可)


<参加費>
無料


<持ち物>
C++17に対する興味


<Twitterハッシュタグ>
#nakamecpp


<協力>
会場サポート:バンタンゲームアカデミー東京校


おまけ:勉強会後…

希望者は、近くの定食屋(各自精算/予算1000円前後)でご飯を食べる予定です


みなさまの参加を心待ちにしております!(^^)/

エントリー先

https://ebisu-effective-modern-cpp.connpass.com/event/119907/