Это потому, что определение std::vector::pop_back
имеет тип возврата void
... вы пытаетесь вернуть что-то из этого метода, который не будет работать, так как этот метод ничего не возвращает.
Измените вашу функцию на следующую, чтобы вы могли вернуть то, что там есть, и удалить заднюю часть вектора:
template <typename Z> Z myTemplate <Z> :: popFromVector ()
{
//create a default Z-type object ... this should be a value you can easily
//recognize as a default null-type, such as 0, etc. depending on the type
Z temp = Z();
if (myVector.empty () == false)
{
temp = myVector.back();
myVector.pop_back();
return temp;
}
//don't return 0 since you can end-up with a template that
//has a non-integral type that won't work for the template return type
return temp;
}