|
Boost : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2024-09-30 17:32:30
Andrzej Krzemienski wrote:
> Hi Everyone,
> I would like to check if something like the following would be a useful addition
> to Boost.Core, or if something like this maybe exists:
>
> I have a class like
> ```
> struct X
> {
> std::string str;
> explicit X(const std::string& s) : str(s) {} }; ```
>
> I need to transform a vector of strings into a vector of X through invoking the
> constructor of X:
>
> ```
> std::vector<std::string> strings = {"cat", "dog", "emu", "fox"}; std::vector<X>
> xs;
>
> std::transform(strings.begin(), strings.end(), std::back_inserter(xs),[](auto
> const& s) {
> return X(s);
> }));
> ```
>
> It works, but a shorter version would be to introduce a component that is
> equivalent to the lambda:
>
> ```
> std::transform(strings.begin(), strings.end(), std::back_inserter(xs),
> construct<X>)); ```
This exists at least four times in Boost (in Lambda, Hof, Phoenix,
Functional/Factory), probably more that I haven't thought of.
But it's not in Core (or in Bind). (Not in Lambda2 either despite
https://github.com/boostorg/lambda2/issues/6)
We try to not make Core the repository of every useful thing someone
thinks of; this role was served by Utility in the past, or Functional for
function objects, but these multiple unrelated component repositories
never work out that well.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk