Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Блог Хеллера ([info]syn_heller)
@ 2013-01-17 12:46:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Пары на C++11

Реализовал на новом C++ (стандарт C++11) такое вот представление пар (для простоты это пары целых значений):

typedef std::function<int(std::function<int(int,int)>)> Pair;

Pair make_pair(int a, int b)
{
    return [=] (std::function<int(int,int)> f)
    {
        return f(a, b);
    };
}

int get_first(Pair p)
{
    return p(
      [] (int a, int b)
      {
        return a;
      }
    );
}

int get_second(Pair p)
{
    return p(
      [] (int a, int b)
      {
        return b;
      }
    );
}

Тривиально (канонически даже), но смешно довольно таки. Я думаю что людям, не знакомым с лямбда-исчислением, будет довольно прикольно разобраться в том, как это работает.

На Гитхаб что ли залить. Вдруг хедхантеры меня там найдут и 100500 денег предложат.



(Читать комментарии) (Добавить комментарий)