Vladimir "Dair" Lebedev-Schmidthof (dair_spb) wrote,
Vladimir "Dair" Lebedev-Schmidthof
dair_spb

C++

Знал, что запись вида
void foo(const TYPE& t);
и
void foo(TYPE const& t);
эквивалентны.

Сегодня выяснил, что первый вариант работает не так как надо, если TYPE это указатель.
Т.е.,
void foo(const int*& t);
и
void foo(int* const& t);
— разные записи. Что логично, да.
Первая — ссылка на указатель на константный объект (по ссылке можно изменить указатель, но нельзя изменить объект), вторая — ссылка на константный указатель (по ссылке нельзя изменить указатель, а объект — можно).
Век живи.

Доопределив как-нить типа
typedef int* IntPointer;
можно спокойно писать
void foo(const IntPointer& t);
будет как надо.
Tags: software development
Subscribe

  • Как бы так...

    Вернулся от голосования к работе, а там. В реальной жизни борт корабля с т.з. программного обеспечения представляет собой некую локальную сеть с…

  • Кстати про виндовс.

    Я когда-то купил лицензионную Win8. Вместе с компьютером. Потом Микрософт выпустил 10 и я проапгрейдился совершенно безвозмездно, т.е., даром. И вот…

  • eth0

    Раньше сетевые интерфейсы именовались в линуксе просто: eth0 (eth - это Ethernet), eth1, ... ну и сколько там у вас сетевых интерфейсов. А теперь не…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments