Страницы

Поиск по вопросам

понедельник, 15 октября 2018 г.

“Lvalue” и “incomplete type”

Наткнулся на описание rvalue и lvalue в стандарте:
Class rvalues can have cv-qualified types; non-class rvalues always have cv-unqualified types. Rvalues shall always have complete types or the void type; in addition to these types, lvalues can also have incomplete types.
Что в данном контексте означает последнее выражение
lvalues can also have incomplete types?
Под incomplete type я понимаю классы, которые объявлены, но не определены (или пока не определены).


Ответ

В пункте 3.9 раскрывается значение "incomplete type" A class that has been declared but not defined, or an array of unknown size or of incomplete element type, is an incompletely-defined object type.43 Incompletely-defined object types and the void types are incomplete types (3.9.1). Objects shall not be defined to have an incomplete type. То есть, классы без реализации, массивы неизвестного размера или массивы "неполностью объявленного типа".

Комментариев нет:

Отправить комментарий