Re: boost::adaptors для временного объекта
От: push  
Дата: 15.10.16 18:52
Оценка:
Здравствуйте, 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 что-то япошки пилили, но сложно сказать в каком оно сейчас состоянии)
Отредактировано 15.10.2016 18:54 push . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.