MyWackoSite: СпецкурсCxx/Осень2007?/КомментарииКЛекциям ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

25 Сентября 2007

Внутреннее представление ссылок

Стандарт (от 1998) говорит следующее:
8.3.2.1... Note: a reference can be thought of as a name of an object.
...
8.3.2.3 It is unspecified whether or not a reference requires storage (3.7).


Таким образом, важна лишь семантика ссылок, как объектов, которые представляют собой альтернативное имя для некоторого другого объекта. Как будет представленна ссылка компилятором полностью зависит от реализации.

Ссылка на ссылку

Там же:
8.3.2.4 There shall be no references to references, no arrays of references, and no pointers to references.

Безымянные структуры

Действительно, C++ позволяет объявлять безымянные структуры и классы (9.1):
class-specifier:
class-head { member-specificationopt }
class-head:
class-key identifieropt base-clauseopt
class-key nested-name-specifier identifier base-clauseopt
class-key nested-name-specifieropt template-id base-clauseopt
class-key:
class
struct
union


Соответственно, следующий код совершенно корректен:
typedef struct { int i; } S;


Впрочем, анонимные типы, точно так же должны подчиняться правилу одного определения, поэтому следующий код компилироваться не будет:
struct { int i; } s1;
struct { int i; } s2;
s1 = s2;

Странный вызов функции с аргументами по умолчанию

Упоминания о том, что функцию, с аргументами по умолчанию, можно вызвать с помощью чего-то такого: f(1,, 2), я в стандарте не нашел. Подобный код не компилируется.
 
Файлы [Скрыть файлы/форму]
Комментариев нет. [Показать комментарии/форму]