Почему стандарт C++ определяет материализацию временного объекта для оператора sizeof prvalue?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему стандарт C++ определяет материализацию временного объекта для оператора sizeof prvalue?

Сообщение Anonymous »

Стандарт C++ ISO/IEC JTC1 SC22 WG21 N4860 гласит, что временные объекты не создаются без необходимости. В нем перечислены ситуации, когда материализуются временные объекты, в том числе для оператора sizeof:
[class.temporary]

Код: Выделить всё

The materialization of a temporary object is generally delayed as long as possible in order to avoid creating unnecessary temporary objects. [Note: Temporary objects are materialized:
(2.1) — when binding a reference to a prvalue (9.4.3, 7.6.1.3, 7.6.1.6, 7.6.1.8, 7.6.1.10, 7.6.3),
(2.2) — when performing member access on a class prvalue (7.6.1.4, 7.6.4),
(2.3) — when performing an array-to-pointer conversion or subscripting on an array prvalue (7.3.2, 7.6.1.1),
(2.4) — when initializing an object of type std::initializer_list from a braced-init-list (9.4.4),
(2.5) — for certain unevaluated operands (7.6.1.7, 7.6.2.4),
(2.6) — when a prvalue that has type other than cv void appears as a discarded-value expression (7.2).
[expr.sizeof]

Код: Выделить всё

If the operand is a prvalue, the temporary materialization conversion (7.3.4) is applied.
Почему нам нужно создавать временный объект во время выполнения только для того, чтобы оценить prvalue, например Foo{} (

Код: Выделить всё

sizeof(Foo{})
), когда sizeof можно определить во время компиляции?

Подробнее здесь: https://stackoverflow.com/questions/783 ... izeof-oper
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Есть ли что -то не так с sizeof (массив)/sizeof (массив [0])?
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Почему член выражения объекта - это xvalue, а не Prvalue?
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Определяет ли стандарт, когда видны побочные эффекты создания экземпляра шаблона функции?
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Почему стандарт C++ неявно не определяет ничего не фиксирующую лямбду как «статическую» по умолчанию?
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Неправильные результаты использования оператора sizeof в C++ [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»