Re[7]: boost::adaptors для временного объекта
От: andyp  
Дата: 18.10.16 09:48
Оценка:
Здравствуйте, df, Вы писали:

df>Именно так.

df>Причем хотелось _бы_ именно _готовое_ решение. Потому как понятно, что _руками_ красоту можно навести. Т.е. вполне можно было бы написать такой враппер:

df>
df>auto r = GetData() | holder | boost::adaptors::transformed([](auto& i) {return i * 2; })
df>


df>выглядит нормально имхо. Но суть от этого не меняется (причем в идеале holder должен уметь отличать rvalue от lvalue).

df>Как мне кажется, делать такое _самому_ лишено большого смысла. А вот если бы было готовое в рамках того же буста, к примеру, то почему бы не воспользоваться.


На сколько понял, по факту тебе требуется нечто типа позднего связывания range и последовательности, чтобы иметь возможность определить алгоритм обработки элементов диапазона заранее, а затем в месте вызова связать его с контейнером или другим range. Не уверен, что требуемый адаптер существует в boost. Т.е. получить поведение типа:


auto r = make_unbound_range() | boost::adaptors::transformed([](auto& i) {return i * 2; });

std::vector<int> doubled;
boost::push_back(doubled, r | bind_range(getData()));


Можно ли это прикрутить малой кровью, я не знаю Может Евгений что скажет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.