Re[8]: КЫВТ GUI—надо быть проще
От: jazzer Россия Skype: enerjazzer
Дата: 06.05.12 08:53
Оценка: +1
Здравствуйте, о_О, Вы писали:

о_О>Здравствуйте, jazzer, Вы писали:


J>>они мономорфные, типы надо явно указывать, что тут еще обосновывать...


о_О>Это С++, а не Йуморле. Большего ожидать не стоит.


Никаких принципиальных проьблем сделать это в С++ я лично не вижу.
Boost.Lambda как-то с этим справляется в рамках С++: _1 < _2.
Вот это — хороший, годный синтаксис для лямбд.
Вот таким он примерно и должен быть, только должен быть встроенным в язык, чтоб были плюшки в виде нормальной диагностики и т.д.

На самом деле, нынешние лямбды — это просто сахар для объявления/определения локального класса-функтора.
И чтоб его можно было использовать со всякими std::for_each, пришлось поменять стандарт и явно разрешить параметризовать шаблоны локальными классами.

Полиморфные лябмды а ля Boost.Lambda элементарно реализуются аналогичным образом, только оператор у функтора должен быть шаблонным, что сейчас запрещено для локальных классов. Если это разрешить — получим нормальные полиморфные лябмды, т.е. такая запись
[...](auto _1, auto _2) { return _1 < _2; }

будет транслироваться в нечто вроде
struct Lambda
{
  ... // captures

  template <class T1, class T2>
  operator()(T1 _1, T2 _2) const { return _1 < _2; }
};

а такой лябмдой уже можно будет итерироваться по std::tuple, к примеру.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.