Re[18]: КЫВТ GUI—надо быть проще
От: enji  
Дата: 11.05.12 13:29
Оценка:
Здравствуйте, о_О, Вы писали:

о_О>>>Всё это цветочки, по сравнению с бустом, в котором потокобезопасные сигналы быстрее обычных (академики постарались).

J>>Быстрее простого boost::function? (это я так напоминаю, что ты все хочешь в function засунуть.)
о_О>я хочу отдельный встроенный тип delegate, например как в C#, дающий хороший байткод, и дедукцию компилятором (сотни ошибок bind при малейшей ошибки уже достали)

Кстати насчет кода — мне кажется, жить стало бы сильно веселей, если бы можно было взять указатель на член как просто указатель на функцию (+ this). Т.е. был бы встроенный тип данных, который бы содержал собственно указатель на функцию и указатель на объект:
struct S
{
  virtual void f()
};

struct C : S
{
  void f();
};

typedef void (### PF)();

S* s = new C;

PF pf = &s->f; // тут генерируется код, который лезет в vtbl и находит C::f()

pf(); // в pf лежат два указателя - адрес C::f и s. В результате произойдет вызов s->C::f()


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

Так как этого нет, то приходится делать руками на уровне библиотеки — через шаблоны и виртуальные функции...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.