class FooInterface {
virtual void toggle() = 0;
};
template <class TYPE, class CONFIG>
class Foo : public FooInterface {
virtual void toggle();
TYPE value_;
};
template <>
void Foo<bool, class CONFIG>::toggle() {
if (CONFIG::canToggle())
value_ = !value_;
}
struct MyConfig {
static bool canToggle() {
return false;
}
};
int main() {
Foo<bool, MyConfig> foo;
}
Это точное приближение того, с чем я имею дело.Я в основном хочу иметь специализированный метод для работы с TYPE , сохраняя при этом универсальный CONFIG .Так, например, у меня может быть дюжина различных Foo :: toggle () методов со специализированной обработкой кода, специфичных для TYPEs , но то, что используется из CONFIG , будетсогласован во всех этих методах.
Проблема в том, что предыдущий код не компилируется вместе с несколькими различными комбинациями, и я был бы признателен за помощь в поиске другого решения или некоторого обходного путичтобы текущий работал.
Редактировать: я должен отметить, что предыдущий код работает без параметра шаблона CONFIG.