Lista de passagem C ++ como parâmetro para uma função

Estou tentando criar um catálogo de endereços muito simples. Criei uma classe de contato e o catálogo de endereços é uma lista simples. Estou tentando criar uma função para permitir que o usuário adicione contatos ao catálogo de endereços. Se eu retirar meu código da função, ele funcionará bem. No entanto, se eu colocá-lo, ele não funciona. Acredito que é um problema de passagem por referência versus passagem por valor que não estou tratando como deveria. Este é o código para a função:

void add_contact(list<Contact> address_book)
{
     //the local variables to be used to create a new Contact
     string first_name, last_name, tel;

     cout << "Enter the first name of your contact and press enter: ";
     cin >> first_name;
     cout << "Enter the last name of your contact and press enter: ";
     cin >> last_name;
     cout << "Enter the telephone number of your contact and press enter: ";
     cin >> tel;

     address_book.push_back(Contact(first_name, last_name, tel));
}

Eu não recebo nenhum erro, no entanto, quando tento exibir todos os contatos, vejo apenas os originai

questionAnswers(8)

yourAnswerToTheQuestion