Re[4]: указатель на мембер в избранное  msdn  новое    Оценить +1123x:) +-   подписка   модер. 
От: shank 
Дата: 10.08.06 10:16
Оценка:17 (3)
Здравствуйте, Bell, Вы писали:

S>>Размеры указателей на int и на double тоже "в общем случае" не совпадают.


B>Неужели?


Угу.
Единственное, что гарантируется касательно размеров указателей, это то, что размер void* достаточен для того, чтобы "вместить" указатель на объект любого типа, а также то что sizeof(void*) == sizeof(char*). Больше никаких гарантий. (Это объяснялось где-то Steve'ом Clamage'ом, если мне склероз не изменяет).

3.9.2/4
Objects of cv-qualified (3.9.3) or cv-unqualified type void* (pointer to void), can be used to point to
objects of unknown type. A void* shall be able to hold any object pointer. A cv-qualified or cv-
unqualified (3.9.3) void* shall have the same representation and alignment requirements as a cv-qualified
or cv-unqualified char*.

---
Re[3]: указатель на мембер в избранное  msdn  новое    Оценить +1123x:) +-   модер. 
От: Bell 
Дата: 10.08.06 10:03
Оценка:1 (1)
Здравствуйте, shank, Вы писали:

S>Здравствуйте, Bell, Вы писали:


NB>>>Какие причины такого решения?

B>>Ну хотя бы то, что размеры указателя и указателя на член в общем случае не совпадают.

S>Размеры указателей на int и на double тоже "в общем случае" не совпадают.


Неужели?
Любите книгу — источник знаний (с) М.Горький
Re: указатель на мембер в избранное  msdn  новое    Оценить +1123x:) +-   модер. 
От: Bell 
Дата: 10.08.06 08:17
Оценка: +1
Здравствуйте, night beast, Вы писали:

NB>Недавно столкнулся с такой непонятной штукой.


NB>Указатель на мембер-функцию не является указателем.

Да, это более сложная сущность.

NB>Какие причины такого решения?

Ну хотя бы то, что размеры указателя и указателя на член в общем случае не совпадают.
Любите книгу — источник знаний (с) М.Горький
Re[2]: указатель на мембер в избранное  msdn  новое    Оценить +1123x:) +-   модер. 
От: shank 
Дата: 10.08.06 08:44
Оценка: +1
Здравствуйте, Bell, Вы писали:

NB>>Какие причины такого решения?

B>Ну хотя бы то, что размеры указателя и указателя на член в общем случае не совпадают.

Размеры указателей на int и на double тоже "в общем случае" не совпадают.
---
Re[8]: указатель на мембер в избранное  msdn  новое    Оценить +1123x:) +-   модер. 
От: zaufi 
Дата: 10.08.06 09:47
Оценка: :)
Здравствуйте, valker, Вы писали:

V>Здравствуйте, night beast, Вы писали:


NB>>"просто" указатель -- низкоуровневая абстракция.

NB>>вот лично ты видишь логические основания не считать pointer-to-member указателем?

V>При прочтеннии этой ветки пришла такая мысль, почему бы не трактовать функции-члены, как обычные функции, но с дополнительным параметром в начале списка — аналогом this, передающимся неявно.


V>код мог бы быть таким:


V>
V>class A{
V>public: void f(void);
V>};

V>A a;
V>void (*pfn)(A* const) = &A::f;
V>(*pfn)(&a);
V>



твою мысль украли бустеры ужа давно -- и использовали при реализации boost::bind
Re[5]: указатель на мембер в избранное  msdn  новое    Оценить +1123x:) +-   модер. 
От: Vamp 
Дата: 07.08.09 14:34
Оценка: :)
Чуть-чуть пендатизма.

S>...а также то что sizeof(void*) == sizeof(char*). ...

В приведенной строчке надо либо убрать один знак =, либо видоизменить ее так:
(sizeof(void*) == sizeof(char*)) = true
Да здравствует мыло душистое и веревка пушистая.