C++ で次のことを行うにはどうすればよいですか。
template <typename T>
void Foo(T t)
{
...
call Bar(true) if T is of some specific type U or V
call Bar(false) otherwise
...
}
void Bar(bool b)
{
...
}
冗長なテンプレート パラメーターを追加することもできますが、それは冗長です。
Bar をテンプレート関数にして U と V に特化することもできますが、それは私のコードではなく、おそらく問題が伝播するだけです。
CallBar
呼び出すだけの関数を作成し、Bar(false)
それを特殊化しBar(true)
て U と V を呼び出すようにすることもできます。boolean は FooLogger の複数の場所で使用され、関数の呼び出しで使用されることがあります (そのため、複数Bar
の s があります) 場合によっては ?: 条件でも使用されます。
ここで何をするのが最善ですか?