Сообщение Re[23]: Зачем плюс? от 28.11.2018 16:10
Изменено 28.11.2018 16:34 N. I.
Re[23]: Зачем плюс?
B0FEE664:
BFE>Здравствуйте, N. I., Вы писали:
BFE>>>Вы меня уверяете, что rvalue — это тип выражения. Так?
NI>>Ткни пальцем, где я такое говорил?
BFE>σ писал, что rvalue — это класс выражений.
Под классом выражений он явно не имел в виду тип выражения.
BFE>>>Если так, то вы хотите сказать, что ссылка привязывается (bind) к выражению, а не к объекту?
NI>>Binding to an expression — это неформальная фигура речи, обозначающая привязку к объекту или функции, что является результатом данного expression.
BFE>Ну, тогда я повторю свой вопрос: какой тип у объекта полученного в результате вычисления rvalue?
Зависит от rvalue и версии стандарта. В случае C++11/14 prvalue скалярного типа (например, int) результирующего объекта вообще нет. Например, литерал 42 вычисляется в pure value, для которого никаких объектов не создаётся. Если таким prvalue инициализируется ссылка, то временный объект создаётся в контексте её инициализации (самому же prvalue при этом никаких объектов не сопоставляется).
В случае C++17 prvalue скалярного типа может иметь результирующий объект, а может и не иметь, в зависимости от контекста. У prvalue типа void результирующего объекта не может в принципе.
BFE>Здравствуйте, N. I., Вы писали:
BFE>>>Вы меня уверяете, что rvalue — это тип выражения. Так?
NI>>Ткни пальцем, где я такое говорил?
BFE>σ писал, что rvalue — это класс выражений.
Под классом выражений он явно не имел в виду тип выражения.
BFE>>>Если так, то вы хотите сказать, что ссылка привязывается (bind) к выражению, а не к объекту?
NI>>Binding to an expression — это неформальная фигура речи, обозначающая привязку к объекту или функции, что является результатом данного expression.
BFE>Ну, тогда я повторю свой вопрос: какой тип у объекта полученного в результате вычисления rvalue?
Зависит от rvalue и версии стандарта. В случае C++11/14 prvalue скалярного типа (например, int) результирующего объекта вообще нет. Например, литерал 42 вычисляется в pure value, для которого никаких объектов не создаётся. Если таким prvalue инициализируется ссылка, то временный объект создаётся в контексте её инициализации (самому же prvalue при этом никаких объектов не сопоставляется).
В случае C++17 prvalue скалярного типа может иметь результирующий объект, а может и не иметь, в зависимости от контекста. У prvalue типа void результирующего объекта не может в принципе.
Re[23]: Зачем плюс?
B0FEE664:
BFE>Здравствуйте, N. I., Вы писали:
BFE>>>Вы меня уверяете, что rvalue — это тип выражения. Так?
NI>>Ткни пальцем, где я такое говорил?
BFE>σ писал, что rvalue — это класс выражений.
Под классом выражений он явно не имел в виду тип выражения.
BFE>>>Если так, то вы хотите сказать, что ссылка привязывается (bind) к выражению, а не к объекту?
NI>>Binding to an expression — это неформальная фигура речи, обозначающая привязку к объекту или функции, что является результатом данного expression.
BFE>Ну, тогда я повторю свой вопрос: какой тип у объекта полученного в результате вычисления rvalue?
Зависит от rvalue и версии стандарта. В случае C++11/14 у prvalue скалярного типа (например, int) результирующего объекта вообще нет. Например, литерал 42 вычисляется в pure value, для которого никаких объектов не создаётся. Если таким prvalue инициализируется ссылка, то временный объект создаётся в контексте её инициализации (самому же prvalue при этом никаких объектов не сопоставляется).
В случае C++17 prvalue скалярного типа может иметь результирующий объект, а может и не иметь, в зависимости от контекста. У prvalue типа void результирующего объекта не может в принципе.
BFE>Здравствуйте, N. I., Вы писали:
BFE>>>Вы меня уверяете, что rvalue — это тип выражения. Так?
NI>>Ткни пальцем, где я такое говорил?
BFE>σ писал, что rvalue — это класс выражений.
Под классом выражений он явно не имел в виду тип выражения.
BFE>>>Если так, то вы хотите сказать, что ссылка привязывается (bind) к выражению, а не к объекту?
NI>>Binding to an expression — это неформальная фигура речи, обозначающая привязку к объекту или функции, что является результатом данного expression.
BFE>Ну, тогда я повторю свой вопрос: какой тип у объекта полученного в результате вычисления rvalue?
Зависит от rvalue и версии стандарта. В случае C++11/14 у prvalue скалярного типа (например, int) результирующего объекта вообще нет. Например, литерал 42 вычисляется в pure value, для которого никаких объектов не создаётся. Если таким prvalue инициализируется ссылка, то временный объект создаётся в контексте её инициализации (самому же prvalue при этом никаких объектов не сопоставляется).
В случае C++17 prvalue скалярного типа может иметь результирующий объект, а может и не иметь, в зависимости от контекста. У prvalue типа void результирующего объекта не может в принципе.