Шаблонные специализации являются различными типами и поэтому не разделяют функции.
Вы можете получить общие функциональные возможности, наследуя от общего базового класса:
template<class T>
struct Base {
operator Foo() { return Foo(); }
};
template<class T>
struct C : Base<T> {
// ...
};
template<>
struct C<Bar> : Base<Bar> {
// ...
operator Bar() { return Bar(); }
};