Вы не можете вернуть локальный объект не просто типа (int, float, char), но вы можете вернуть указатель на новый объект:
list<int>* makelist(int litem)
{
list<int>* newList = new list<int>();
newList->push_front(litem);
return newList;
}
позаботьтесь о том, чтобы выДОЛЖЕН управлять указателем последнего, чтобы избежать утечек памяти.