Как сделать следующее в 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. Но пример на самом деле немного упрощена здесь. Логическое значение используется во многих местах в FooLogger иногда при вызове функций (поэтому есть несколько Bar
s) иногда даже в?: Условностях.
Что для вас лучше всего?
он также может использовать шаблон специализации? –