Effective Modern C++読書会 vol.3

項目3

  • pp.22~23にかけて、「()」以外に他にはまり方は存在する?

    decltype(auto)ではまる可能性があるのは()を使った場合のみ。

  • decltype(auto)に「&,*」をつけられない

    つけたければautoを使う。

項目4

  • typeid(x).name()が出力する文字列の決まりは規格書にはない

  • deplicatedでwarningを出せば人間に読める形で型が出力される。(printfデバッグ的な)

  • ラムダ式の型はコンパイラにしかわからない。

    ラムダ式をtypid()に入れると訳の分からない文字列が返ってくる。

  • typeidに寿命はない
  • functionとautoは同じではない。

    functionの方がメモリ的にオーバーヘッドが生じる

  • []なにもキャプチャしないラムダ式は関数ポインタに代入できる。

    Cのコールバックをラムダで書くこともできる。

項目5

  • autoで宣言した変数は必ず初期化される

    初期化したくない場合はautoは使えない

お悩み雑談室

  • ASSERTに副作用のある関数が含まれていることを検知する方法はある?

    →難しい

    • pure attributeが提案中
      副作用のあることをやっていたら怒り出す。
      でも引数に副作用がある場合は検知できない…