Здравствуйте, df, Вы писали:
df>Привет всем.
df>Хотелось бы примерно следующего:
df>
df>vector<int> GetData()
df>{
df> return { 1,2,3,4,5,6,7,8,9 };
df>}
df>auto doubled = GetData() | boost::adaptors::transformed([](auto& i) {return i * 2; });
df>
df>С этим диапазоном сделать мы ничего не сможем, т.к. адаптер будет применяться к временному объекту (коряво, но идея, думаю, понятна). А как бы все-таки обмануть? Без того, чтобы предварительно сохранять результат GetData()?
не очень понятна идея, но есть такие варианты:
1) переопределить оператор присваивания — но тогда забыть про auto
2) добавить через вертикальную строку преобразователь в нужный формат (типа как в LINQ для проекции)
3) использовать подобие расширяющих методов в с++:
расширяющие методы (вот тут
p-strade/oven что-то япошки пилили, но сложно сказать в каком оно сейчас состоянии)