1. Убрать присваивания в конструкторе и сразу инициализировать члены.
foo(int x, int y)
m_x(x),
m_y(y),
m_s("test"),
m_f("test"),
...
{
2. Если указанные инициализирующие строки константы — лучше сразу вынести их в статические константные std::string.
static std::string const TEST("test");
Если передаются в конструктор как аргументы — передавать их по константной ссылке.
foo(int x, int y, std::string const & s, std::string const & f, ...)
3. При добавлении в список избегать локального экземпляра foo, создавать сразу при вызове push_back.
list.push_back(foo(3, 5));