Вам нужно изменить основной шаблон на
template<class T, bool B>
class Foo
{
};
, а затем вы можете специализировать его как
template<>
class Foo<int, true>
{
};
template<>
class Foo<int, false>
{
};
...
, и тогда вы будете использовать его как
Foo<int, true> FooT;
Foo<int, false> FooF;
Если вы собираетесь использовать значения для первого параметра, такие как
Foo<1, true>
Тогда основной шаблон должен быть
template<int I, bool B>
class Foo
{
};
, а затем вы можете специализировать его как
template<>
class Foo<1, true>
{
};
template<>
class Foo<1, false>
{
};
...