C++ Logo

SG12

Advanced search

Subject: Re: [ub] bit_cast
From: Lawrence Crowl (Lawrence_at_[hidden])
Date: 2013-11-04 12:40:23


The intent is to provide an alternative to the idiom

int i; float f = *(float*)&i;

The usual objection is "but memcpy is slow".
The answer is "your compiler is better than you think".

On 11/4/13, Jeffrey Yasskin <jyasskin_at_[hidden]> wrote:
> template<typename To, typename From>
> To bit_cast(const From& from) {
> static_assert(sizeof(To) == sizeof(from));
> To result;
> memcpy(result, from, sizeof(from));
> return result;
> }
>
> On Mon, Nov 4, 2013 at 7:51 AM, J. Daniel Garcia
> <josedaniel.garcia_at_[hidden]> wrote:
>> Can you elaborate what such a thing would be?
>>
>>
>>
>> On Mon, Nov 4, 2013 at 5:11 AM, Lawrence Crowl <Lawrence_at_[hidden]>
>> wrote:
>>>
>>> Did we standardize bit_cast at all?
>>>
>>> It would help avoid the almost overwhelming temptation
>>> for programmers to do the wrong thing.
>>>
>>> --
>>> Lawrence Crowl
>>> _______________________________________________
>>> ub mailing list
>>> ub_at_[hidden]
>>> http://www.open-std.org/mailman/listinfo/ub
>>
>>
>>
>> _______________________________________________
>> ub mailing list
>> ub_at_[hidden]
>> http://www.open-std.org/mailman/listinfo/ub
>>
> _______________________________________________
> ub mailing list
> ub_at_[hidden]
> http://www.open-std.org/mailman/listinfo/ub
>

-- 
Lawrence Crowl

SG12 list run by sg12-owner@lists.isocpp.org