Здравствуйте, gegMOPO4, Вы писали:
MOP>Здравствуйте, Кодт, Вы писали: К>>По моему опыту, удобно определить сразу комплекты для ссылок, указателей и умных указателей
MOP>А как быть с ссылками на указатель?
Если хочешь снять константность со ссылки на {указатель / умный указатель / что угодно ещё} — применяешь remove_const_ref.
Здравствуйте, Кодт, Вы писали:
К>>>По моему опыту, удобно определить сразу комплекты для ссылок, указателей и умных указателей
MOP>>А как быть с ссылками на указатель?
К>Если хочешь снять константность со ссылки на {указатель / умный указатель / что угодно ещё} — применяешь remove_const_ref.
Это все семечки.
Я бывает, наоборот -- константность с указателя на ссылку снимаю, так всем отделом потом обратно надевают!
Здравствуйте, Alexander Poluektov, Вы писали:
AP>Это все семечки. AP>Я бывает, наоборот -- константность с указателя на ссылку снимаю, так всем отделом потом обратно надевают!
Достаточно просто сделать указатель на ссылку, чтобы потом весь отдел снимал-надевал.
Здравствуйте, Кодт, Вы писали:
AP>>Это все семечки. AP>>Я бывает, наоборот -- константность с указателя на ссылку снимаю, так всем отделом потом обратно надевают!
К>Достаточно просто сделать указатель на ссылку, чтобы потом весь отдел снимал-надевал.
Здравствуйте, Alexander Poluektov, Вы писали:
К>>Достаточно просто сделать указатель на ссылку, чтобы потом весь отдел снимал-надевал. AP>Так точно, товарищ Капитан!
Капитанский подарок
struct foo { int* p; };
struct bar { int& r; bar(int& x) : r(x) {} };
assert(sizeof(foo)==sizeof(bar)); // доверьяй но проверьяйint x = 1, y = 2;
bar b(x);
b.r = 3; // x = 3
((foo&)b).p = &y;
b.r = 4; // y = 4; либо компилятор оптимизировал и не ждал от нас подлости, тогда x = 4
Здравствуйте, Кодт, Вы писали:
К>>>Достаточно просто сделать указатель на ссылку, чтобы потом весь отдел снимал-надевал. AP>>Так точно, товарищ Капитан!
К>Капитанский подарок К>
К>struct foo { int* p; };
К>struct bar { int& r; bar(int& x) : r(x) {} };
К>assert(sizeof(foo)==sizeof(bar)); // доверьяй но проверьяй
К>int x = 1, y = 2;
К>bar b(x);
К>b.r = 3; // x = 3
К>((foo&)b).p = &y;
К>b.r = 4; // y = 4; либо компилятор оптимизировал и не ждал от нас подлости, тогда x = 4
К>
Ну а о чем это говорит? Что сдуру можно сломать всё?