Вы должны иметь следующую подпись
template <typename T>
void func(typename Foo<T>::Bar* bar) // Why is this line wrong???
Однако это не единственная проблема
func(&foo.bar_);
также должно быть
func<int>(&foo.bar_);
Этопотому что вы вызываете шаблонную функцию "func", но ее тип не может быть выведен.Без его типа это выдаст ошибку, такую как
no matching function for call to 'func(Foo<int>::Bar*)'