myoukakuのブログ

C++でゲームエンジンを作っていきます。

C++11

空のstd::vectorのdataの値

空のstd::vectorに対してdata()を呼び出した時、任意の値を返しても良いことになっている。 つまり nullptr かもしれない 有効なアドレスを指したポインタかもしれない なぜかというと [data(),data() + size()) が有効な範囲を表すと定義されており、size()…

静的コード解析

「Doom 3」「Quake 3: Arena」「Wolfenstein: Enemy Territory」を、静的コード解析ツールである、CppCheckとPVS-Studioに掛けて結果を比較した記事。 Cppcheck and PVS-Studio compared PVS-Studioの宣伝記事だと思うので、CppCheckとの比較はさておき、検…

Visual Studio 2013 の std::is_pod のバグ

Visual Studio 2013 Update 3 では以下のコードがコンパイルエラーになります。 #include <type_traits> static_assert(std::is_pod<int>::value == true, ""); static_assert(std::is_pod<int*>::value == true, ""); static_assert(std::is_pod<int&>::value == false, ""); // 1 static_</int&></int*></int></type_traits>…

テンプレートパラメータパックのインデックスアクセス

Variadic Template をいじくりまわしていて、テンプレートパラメータパックのインデックスアクセスがほしいと思いましたが標準に無いんですね。素直に線形オーダーで実装すると数が多いときに使い物にならなかったのですが、対数オーダーで実装できるようで…