新しいコンテナを作成しています。テンプレートパラメータの1つは、初期容量です。その結果、異なる初期容量を持つインスタンスを作成すると、コンパイラーはテンプレート化クラスごとに同じコードを生成します。コンパイラは、同様のテンプレートクラスメンバー関数でグローバル最適化を実行できますか?
MyVector<3> firstVector;
MyVector<4> secondVector;
...
if (firstVector.empty() && secondVector.empty())
{
...
}
このスニペットを使用すると、コンパイラは両方のクラスに対してempty()
を生成します。コンパイラはこの減少を排除できますか?
なぜ初期容量はテンプレートパラメータですか?ちょうど不思議なことに、標準のコンテナはそれなしではうまくいくように見えますが、最適化を行うことはできません(コンテナが自由に拡張できることを意味する* initial *を取る)。 – delnan