Код: Выделить всё
struct MyInterface {};
struct Data : MyInterface{};
struct DataWrapper
{
SomeContainerOf getData()
{...}
private:
std::vector dataStorage;
};
В идеале мы хотим сделать это без копирования. Я хочу знать, как лучше всего это сделать. Насколько я могу судить, идиоматический способ C++ сделать это примерно следующий:
Код: Выделить всё
auto DataWrapper::getData()
{
return dataStorage
| std::ranges::views::transform(
[](Data& d) -> MyInterface* { return &d; }
);
}
Альтернатива Я подумываю о том, чтобы создать собственное представление (где я мог бы сделать тип немного более понятным), но мне действительно больно переопределять что-то, что так ясно указано в стандарте. Каким будет рекомендуемый шаг для такого сценария? Говорит ли современный C++, что я должен сохранять возвращаемое значение автоматически?
Подробнее здесь: https://stackoverflow.com/questions/785 ... t-it-wrong