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

J>стандартная библиотека — это считай что native: компилятор может какие угодно хаки применять в реализации стандартной библиотеки.

будем реалистами, он не станет этого делать

J>В любом случае, даже если бы оно было встроено непосредственно в язык, что бы изменилось интерфейсно?


Например, вот придумал только сейчас:
delegate<signature> - оператор объявления типа делегата с сигнатурой signature

delegate(function, оbject, (arg1, arg2, ... argN | _1, _2, ... _N) ) - оператор создания функционального объекта для делегата с сигнатурой function,
из функции function и (если function - член-функция) указателя на объект оbject
//короче std::bind-like синтаксис, пусть только дедукцией занимается компилятор, а не костыли вида std::bind


Живой пример:
enum class EventType
{
  Test  = 0x0001,
};

struct Object
{
  void OnEvent(EventType event)
  {
    //1st subscriber callback
  }
};

void OnEvent(EventType event)
{
  //2nd subscriber callback
}

int main()
{
  Object object;
  delegate<void(EventType event)> d = delegate(&Object::OnEvent, &object); //делегат d инициализируется первым подписчиком
  d += delegate(OnEvent); //добавляется второй подписчик
  d += [](EventType event) { /*3rd subscriber callback*/ }; //добавляется третий подписчик

  d -= delegate(OnEvent); //второй, пожалуй, лишний
  d(EventType::Test); //вызов подписчиков 1 и 3: метода Object::OnEvent объекта object и анонимной функции
  //???
  //ENJOY!!1
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.