I thought about it for a bit, and C++ really has no concept of value truncation, so you get a prvalue of type char that stores the entire value of the object into it's context. Therefore, strictly following the rules of the abstract machine:
int a = 42;
auto b = reinterpret_cast<unsigned char*>(&a);
int c = *b; // this will have the value 42
(language-lawyer fact check me on this one)
Sent from my Samsung Galaxy smartphone.
-------- Original message --------
From: Timur Doumler via Std-Proposals <std-proposals@lists.isocpp.org>
Date: 8/21/19 15:11 (GMT-05:00)
To: std-proposals@lists.isocpp.org
Cc: Timur Doumler <cpp@timur.audio>
Subject: Re: [std-proposals] Allowing access to object representations
This doesn't make sense to me. If I have an object of type int (or, say, a struct containing an int), then the value has 4 bytes. If I access that value by dereferencing a char pointer that aliases that object, all I can ever get from that char is a single byte. How can this be "the object"?
Cheers,
Timur
> On 21 Aug 2019, at 20:59, language.lawyer--- via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
>
>> On 21/08/2019 21:55, Krystian Stasiowski via Std-Proposals wrote:
>> Yes, you access the value of the object of the object, however, since its not specified what exactly you get
>
> It is specified: you get the value contained in the object.
>
>> http://eel.is/c++draft/conv.lval#3.4
>
> Indeed, it is specified here.
> --
> Std-Proposals mailing list
> Std-Proposals@lists.isocpp.org
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals