Как говорят все остальные, не делайте этого.Возвращать ссылку или указатель на локальную переменную всегда неправильно, потому что сам акт возврата избавляет от локальной переменной и, следовательно, ссылка или указатель автоматически становятся недопустимыми.
Копирование не может быть проблемой.Компиляторам C ++ разрешается пропускать конструкторы копирования при возврате из функций («оптимизация возвращаемого значения»), поэтому достаточно умный компилятор может построить это значение на месте.Следовательно, вы вполне можете вернуть большое значение без копирования.Попробуйте и посмотрите;вы можете временно поместить выходные операторы в конструктор копирования (если вы написали один и не используете автоматически сгенерированный), чтобы увидеть, действительно ли он вызывается.
Итак, без запуска и попытки вы нене знаю, происходит ли фактическое копирование, и если да, то какая это большая проблема.Как всегда, время и профиль запуска, чтобы увидеть, если есть проблема и, если так, где.Делать что-либо рискованное и / или сбивающее с толку для ускорения производительности почти никогда не стоит делать до определения времени и профилирования.