Boost logo

Boost :

Subject: Re: [boost] [convert] Now with Boost.Parameter interface.
From: Emre Turkay (emreturkay2_at_[hidden])
Date: 2009-05-06 04:41:33


Hi Vladimir,

I think ability to set persistent behavior would be nice. Something like this;

1. convert::set(locale_ = new_locale)(throw_ = true);
2. int i = convert<int>::from(str1, 0);
3. int j = convert<int>::from(str2, 0);

The line #1 effect lines following it (#2 & #3).

Take care,

     emre

On Mon, May 04, 2009 at 02:12:10PM +1000, Vladimir.Batov_at_[hidden] wrote:
> I've incorporated, uploaded to the Vault and started playing with the
> Boost.Parameter-based interface that Andrey Semashev was insisting from
> the set-go. And it is definitely growing on me and I like
>
> int i = convert<int>::from(str, 0)(locale_ = new_locale)(throw_ =
> true);
>
> instead of the original
>
> int i = convert<int>::from(str, 0) >> new_locale >> dothrow;
>
> I think people generally did not like locales and dothrow behaving like
> manipulators.
>
> The more I use the Boost.Parameter-based interface the more I am inclined
> to push it further and apply it to manipulators as well. I.e.
>
> int i = convert<int>::from(str)(radix_ = 16);
>
> instead of the original direct handling of std manipulators.
>
> int i = convert<int>::from(str) >> std::hex;
>
> Something, again, Andrey was advocating from the start. Now it feels like
> allowing io-stream manipulators exposes too much implementation detail and
> raises some unwarranted expectations.
>
> That raises a few questions that I am hoping people could help me with:
>
> 1. Both interfaces (for locale and dothrow) are currently supported:
>
> #1 int i = convert<int>::from(str, 0)(locale_ = new_locale)(throw_
> = true);
> #2 int i = convert<int>::from(str, 0) >> new_locale >> dothrow;
>
> Should I remove #1?
>
> 2. Both interfaces
>
> #1 int i = convert<int>::from(str, 0) >> std::hex;
> #2 int i = convert<int>::from(str, 0)(radix_ = 16);
>
> are currently supported. Should I move away from direct manipulator
> support and remove #1?
>
> 3. I only managed to figure out how to supply only one Boost.Parameter at
> a time like
>
> int i = convert<int>::from(str, 0)(locale_ = new_locale)(throw_ =
> true);
>
> I understand how to achieve
>
> int i = convert<int>::from(str, 0)((locale_ = new_locale, throw_ =
> true));
>
> (with double quotes) but do not want to go there as it looks somewhat
> unorthodox. I cannot figure out how to achieve the following
>
> int i = convert<int>::from(str, 0)(locale_ = new_locale, throw_ =
> true);
>
> (a list inside single quotes). I remember Andrey mentioning I could do
> that with a Boost.Parameter macro but I admit of not being bright enough
> to figure it out by myself. Any help would be greatly appreciated.
>
> Thanks,
> Vladimir.
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk