Компилируется такой код:
#include <vector>
#include <memory>
struct Base
{
virtual std::vector<int> foo() const = 0;
};
template<class T>
struct Class
: Base
{
virtual double foo() const override
{
return 123;
}
};
int main()
{
std::unique_ptr<Base> ptr = std::make_unique<Class<int>>(); // можно заменить на make_shared и т.д.
std::vector<int> res = ptr->foo();
return 0;
}
В данном случае испортится стек при вызове функции foo. Если в классе Class у функции foo сделать возвращаемый равный по размеру std::vector<int>, стек при вызове не испортится, просто в результате будет мусор.
Так что будьте осторожны!