Boost logo

Boost :

From: Janek Kozicki (janek.listy.mailowe_at_[hidden])
Date: 2021-01-07 14:26:34


Alexander Grund via Boost said: (by the date of Wed, 6 Jan 2021 09:47:03 +0100)

> Using reserved names (i.e. some names starting with underscore) is
> outright UB in C++ and hence mustn't be used.

Hi,

(I'm sorry to hijack a little bit)

I am planning to implement units in YADE [1][2], and initially I wanted to use _m
_km _s names, so that I could write: 1.0_km instead of 1.0km

Then I decided against it, because of UB.
Then I saw in boost ublas tensor this example:

Cem Bassoy via Boost said: (by the date of Wed, 6 Jan 2021 10:32:15 +0100)

> Please consider to use and contribute to *Boost.uBlas*
> <https://github.com/boostorg/ublas> which recently added *tensor* data
> types and operations with the convenient Einstein notation :
>
> tensor_t C = C + A(_i,_j,_k)*B(_j,_l,_i,_m) + 5;

Which is using exactly the notation which I need: 10_kPa is easier to
read than 10kPa, or 10_Pa vs 10Pa

So. Where exactly do we have UB ?
Would simply putting it into separate namespace yade::units solve the problem?

Are there only certain letters forbidden after a starting underscore?
I plan to add user defined literals for all SI, atomic units and
later astrophysical units.

best regards
Janek Kozicki

[1] http://yade-dem.org/
[2] https://en.cppreference.com/w/cpp/language/user_literal

-- 
Janek Kozicki, PhD. DSc. Arch. Assoc. Prof.
Gdañsk University of Technology
Faculty of Applied Physics and Mathematics
Department of Theoretical Physics and Quantum Information
--
http://yade-dem.org/
http://pg.edu.pl/jkozicki (click English flag on top right)

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