$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [units] Interest in UDLs (e.g. _kg) for units?
From: Bo Persson (bop_at_[hidden])
Date: 2014-08-27 05:01:46
Paul A. Bristow skrev den 2014-08-26 19:13:
>
>
>> -----Original Message-----
>> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of Marek Kurdej
>> Sent: 25 August 2014 17:31
>> To: Boost Developers' Mailing List
>> Cc: mathias.gaunard_at_[hidden]
>> Subject: Re: [boost] [units] Interest in UDLs (e.g. _kg) for units?
>>
>>>
>>> From: Mathias Gaunard <mathias.gaunard_at_[hidden]>
>>> To: boost_at_[hidden]
>>> Date: Mon, 25 Aug 2014 17:16:21 +0200
>>> Subject: Re: [boost] [units] Interest in UDLs (e.g. _kg) for units?
>>> On 25/08/14 16:03, Sebastian Redl wrote:
>>>>
>>>>
>>>> On 25 Aug 2014, at 13:24, Mathias Gaunard
>>>> <mathias.gaunard_at_[hidden]>
>>> wrote:
>>>>
>>>>> On 22/08/14 10:08, Curdeius Curdeius wrote:
>>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> I was wondering if there is any interest in adding User-Defined
>>> Literals
>>>>>> (UDLs) to Boost.Units.
>>>>>>
>>>>>> IMO, it could simplify some code and improve code readability in
>>>>>> some
>>> cases.
>>>>>> For example instead of writing (it's a somehow artificial example)
>>>>>> 5.34 * si::milli * si::kilogram;
>>>>>> 1234 * si::kilogram;
>>>>>> one would write
>>>>>> 5.34_g;
>>>>>> 1234_kg;
>>>>>
>>>>>
>>>>> Did you mean to write
>>>>> 5.34_g * si::milli;
>>>>> or
>>>>> 5.34_mg;
>>>>> ?
>>>>
>>>>
>>>> No, to get grams you need si::milli * si::kilogram. I assume the
>>> intention is that the _g suffix already includes that scaling -
>>> otherwise itâd be broken.
>>>
>>> Sorry, I read that too fast.
>>> In any case the idea would be to get suffixes that include all prefix
>>> variants as well.
>>
>>
>> Yes, the idea is to include all the prefix variants as well, so for the mass, we will
>> have:
>> ..., _ng, _ug (?), _mg, _g, _kg, _Mg,_Gg, _Tg, ...
>> And, the fact is, writing si::milli * si::kilogram is counterintuitive as you have just
>> experienced on your own.
>
> Looks much nicer!
>
> Will reduce the user resistance to using Boost.Units - it's a bit verbose for mere engineers and scientist's taste ;-)
>
> But have you implemented it yet?
>
> (and are there any hidden gotchas? - the proposed C++ time literals suffixes proved to be a can of worms :-(
>
One known problem is that the kg is the base unit, despite its prefix.
That makes the higher units a bit odd. I have never ever seen Mg used,
it would be called a ton (metric...). Then we have megatons, but never
teragrams.
Closing the can before anything bad happens...
Bo Persson