Boost logo

Boost :

Subject: Re: [boost] [config] RFC PR 82
From: Agustín K-ballo Bergé (kaballo86_at_[hidden])
Date: 2015-11-24 16:21:58


On 11/24/2015 6:03 PM, Andrey Semashev wrote:
> On 2015-11-24 23:54, Agustín K-ballo Bergé wrote:
>> On 11/24/2015 5:20 PM, Andrey Semashev wrote:
>>>>> Ditto BOOST_HAS_UNION_TYPE_PUNNING_TRICK (doesn't any compiler support
>>>>> this?).
>>>>
>>>> 'I'm all with you on this one' but since 'it is not in the standard'
>>>> language purists will probably complain if it is used
>>>> unconditionally...
>>>
>>> To some extent this is guaranteed by [class.union]/1 in C++11.
>>
>> No, it isn't.
>
> Why? Reading different members of the standard layout union within the
> common initial sequence is enough to implement a bitwise_cast.

That would be 9.2 [class.mem]/19, notes are not normative.

I can't tell from the context whether this would be enough for a
`bitwise_cast` (what is it supposed to do?). The OP talks about "union
type punning trick", which is a fine practice in C11 but undefined
behavior in C++. Some compilers choose to offer this as a conforming
extension.

Regards,

-- 
Agustín K-ballo Bergé.-
http://talesofcpp.fusionfenix.com

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