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

  • Кино

    Посмотрели "Три биллборда на границе Эббинга, штат Миссури" — отличный фильм. Очень живой, динамичный, безумно смешной (трагикомичный, конечно). И…

  • Х/ф «Движение вверх»

    Посмотрели на излёте проката. Фильм — образец, как надо снимать кино. Вот, все делайте так же. Для начала. Отличные персонажи, сценарий, диалоги,…

  • х/ф "Матильда"

    Продолжаем посещать кинотеатры для просмотра современного российского кино. Х/ф "Матильда", кстати, довольно неплохой. Повествует о сложном принятии…

  • 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