Skip to content

azbyx/print_ip

Repository files navigation

Домашнее задание 03

Build Status Download

Условие задания

Реализовать функцию печати условного ip-адреса. Функцию нужно реализовать для различных входных параметров путём использования механизма SFINAE. Всего нужно выполнить 3 обязательных и один опциональный вариант функции.

  1. Адрес может быть представлен в виде произвольного целочисленного типа. Представление не зависит от знака типа. Выводить побайтово, начиная со старшего байта, с символом . (символ точки) в качестве разделителя.
  2. Адрес может быть представлен в виде строки. Выводится как есть.
  3. Адрес может быть представлен в виде контейнеров std::list, std::vector. Выводится содержимое контейнера поэлементно и разделяется . (одним символом точка).
  4. Опционально адрес может быть представлен в виде std::tuple при условии, что все типы одинаковы. Выводится содержимое поэлементно и разделяется . (одним символом точка).

Прикладной код должен содержать следующие вызовы:

  • Печать адреса как char(-1)
  • Печать адреса как short(0)
  • Печать адреса как int(2130706433)
  • Печать адреса как long(8875824491850138409)
  • Печать адреса как std::string
  • Печать адреса как std::vector
  • Печать адреса как std::list
  • Опционально. Печать адреса как std::tuple

Добавить в .travis.yml на этапе сборки вызов doxygen и публикацию html-версии документации на github-pages. Подробное описание на странице: https://docs.travis-ci.com/user/deployment/pages/ Включить в репозиторий файл Doxyfile с включенными опциями HAVE_DOT и EXTRACT_ALL.

Дополнительные требования

  • функция печати должна быть одной шаблонной функцией, разные варианты входов должны быть реализованы через механизм SFINAE
  • специализация для целочисленного представления должна быть единственная
  • специализация для контейнеров должна быть единственная
  • не должно быть реализации типа "если не совпало с иными - значит это контейнер"
  • опциональная реализация для std::tuple должна приводить к ошибке в случае отличающихся типов
  • найдите самый простой способ сделать для печати std::string
  • бинарный файл и пакет должны называться print_ip