C++ Party 2014: Лекция 1. Магия метапрограммирования на примере Boost.Geometry. Чернигин Алексей

1408

Чернигин Алексей рассказывает о метапрограммировании на примере Boost.Geometry.

  1. Предыстория
  2. Необходимые геометрические примитивы
  3. Необходимые геометрические алгоритмы
  4. Требования на библиотеку
  5. Существующие альтернативы
  6. А что, если мы разрабатываем не приложение, а библиотеку?
  7. Требования на библиотеку
  8. Суровая правда жизни, или как выглядит типичная интеграция со сторонней библиотекой
  9. Пример интеграции с GEOS
  10. Пример интеграции с GEOS
  11. Проблемы с производительностью
  12. можно ли по-другому?
  13. Нам нужна магия generic!
  14. Расстояние между двумя точками struct Point
  15. Добавляем шаблоны
  16. Надо сделать generic access
  17. Generic access
  18. Применим к GeoPoint namespace boost
  19. О метафункции
  20. Обобщаем размерность
  21. Эволюция функции distance namespace boost::geometry
  22. Рекурсивное инстанцирование
  23. Промежуточные результаты
  24. Концепция Point
  25. Адаптация GeoPoint для концепции точки namespace boost::geometry::traits
  26. Концепция LineString
  27. Адаптация Polyline namespace boost
  28. Что в итоге
  29. Добавляем геометрические примитивы
  30. Есть 2 решения
  31. Концепция Point (финальная)
  32. Адаптация концепции точки
  33. Tag dispatching
  34. Возможности tag dispatching by type
  35. Добавляем геометрические примитивы
  36. Определим тип точки для геометрий
  37. Переопределим dimension
  38. Переопределим систему координат
  39. Реверсивный порядок аргументов
  40. Изменяем distance namespace boost::geometry::dispatch
  41. Результаты