Здравствуйте, N. I., Вы писали:
NI>Одно дело, когда в теории плавает новичок, недавно начавший изучение языка, либо предметом разговора являются сложные для понимания или специфичные редко используемые фичи, и совсем другое — когда глупые вопросы по азам C++ задаются челом, который использует плюсы несколько лет, причём не как любитель, а как профессиональный программер, работающий на некую реальную контору (судя по его словам в других топиках). С таким стажем базовую терминологию и базовые концепции языка уже надобно знать, как таблицу умножения.
-1
σ>>Но вообще в этой инициазизации выражение попадает под lvalue-to-rvalue conversion. Смотрим, что написано про него https://timsong-cpp.github.io/cppwp/n4659/conv.lval#3 σ>>The result of the conversion is determined according to the following rules: σ>>… (тут всё не подходит) σ>>(3.4) — Otherwise, the value contained in the object indicated by the glvalue is the prvalue result.
σ>>lvalue *reinterpret_cast<char*>(&i) у нас indicate the int object — i.
NI>Но значение этого lvalue интерпретируется согласно правилу, которое ты уже цитировал: "For other objects, the interpretation of the values found therein is determined by the type of the expressions ([expr.compound]) used to access them" из http://eel.is/c++draft/intro.object#1
Полу-официальное мнение Хьюберта, Йенса и Р. Смита: это предложение в intro.object/1 — crap, который притащили из стандарта C. Оно не значит ничего.
(Примерно так я почти всегда и думал).
BFE>>>Значение указателя — адрес. σ>>https://timsong-cpp.github.io/cppwp/n4659/basic.compound#3 : σ>>Every value of pointer type is one of the following: σ>> — a pointer to an object or function (the pointer is said to point to the object or function), or σ>> — a pointer past the end of an object ([expr.add]), or σ>> — the null pointer value ([conv.ptr]) for that type, or σ>> — an invalid pointer value.
BFE>И что? Да, указатель указывает на объект, функцию, конец объект или имеет нулевое значение или невалидное значение.
BFE>Из 7.6.2.1/3: речь про операцию взятия адреса: BFE>
BFE>if the type of the expression is T, the result has type “pointer to T” and is a prvalue that is the address of
BFE>the designated object (6.6.1) or a pointer to the designated function.