I am wondering if there is a shortcut syntax for this sort of code:

```
#include <boost/iterator/function_input_iterator.hpp>
#include <boost/range.hpp>

int main() {
    std::function<int (int)> f = [](int i) -> int {
       // some logic, return int
    };
    auto r = boost::make_iterator_range(boost::make_function_input_iterator(f, 0), boost::make_function_input_iterator(f, 10));
    return 0;
}

```

Two notes:

* I couldn't use `auto f = [](int i) ->int {...};` as this causes:

`error: no type named 'result_type' in 'struct main()::<lambda(int)>'`

using std::function fixes it for some reason.

* Also I can't pass `f` as temporary inline ie `boost::make_function_input_iterator([](int i) ->int {...}, ...` as that function takes f by reference.

Ideally I'd like to be able to do:

`make_function_input_range(0, 10, [](int i)->int {...});`