p_tan's blog

勉強日記です。ツッコミ大歓迎

C++11

PODクラスのデフォルトコンストラクタとメンバ変数をprivateにすることでクラスの不変条件を担保する

C++でCと互換性のあるデータ型を使いたい場合は、POD(Plain Old Data)型としなければならない。 C++11 でPODクラスの要件が緩和されたので、PODクラスのメンバ変数やdefaultコンストラクタをprivate に定義できるようになった。 これにより、PODクラスでもコ…

autoを使おう

GoingNative 2012のスライドを眺めていたらびっくりしたのでメモ。 STL11: Magic && Secrets | GoingNative 2012 | Channel 9のスライド24枚目。 map<string, int> m; for(const auto& p1 : m) for(const pair<string, int>& p2 : m) このfor文、どっちが速い?って問い。答えは上の方</string,></string,>…

constexpr関数とstatic_assertでコンパイル時ユニットテスト

constexprな関数はstatic_assertでコンパイル時にユニットテストできる。 // ユークリッド互除法による最大公約数 constexpr int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } // constexprな関数gcdのユニットテスト static_assert(gcd(1, 1)…