Оптимизация зависит от компилятора. Почему бы вам не создать сборку релиза и не выполнить пошаговую разборку?
Тем не менее, это не идиоматический способ сделать это. Вы должны либо использовать специализацию шаблона, либо перегрузку метода. Они оба обеспечивают разрешение во время компиляции. Итак, в этом случае я бы предпочел последнее:
#include <type_traits>
template <bool flag>
class foo
{
public:
int bar()
{
_bar(std::integral_constant<bool, flag>())
}
private:
int _bar(std::true_type)
{
// stuff
}
int _bar(std::false_type)
{
// empty
}
};
РЕДАКТИРОВАТЬ: для этого требуется C ++ 0x, но его можно легко перевести на C ++ 98, включив boost/type_traits
и изменив директивы std::
на boost::
. И, конечно же, для этого потребуются библиотеки повышения.