#include <vector>
#include <memory>

template<class T>
std::vector<T> make_vector(){
  std::vector<T> v;
  // ...
  return v;
}

template<class T, class Alloc>
std::vector<T, Alloc> make_vector(Alloc const& al = Alloc()){
  std::vector<T, Alloc> v(al);
  // ...
  return v;
}

int main(){
  auto v1 = make_vector<int>();
  auto v2 = make_vector<int, std::allocator<int>>();
  std::allocator<int> al;
  auto v3 = make_vector<int, std::allocator<int>>(al);
}