项目作者: azbyx

项目描述 :
Using SFINAE to overload functions
高级语言: C++
项目地址: git://github.com/azbyx/print_ip.git
创建时间: 2020-11-26T15:54:48Z
项目社区:https://github.com/azbyx/print_ip

开源协议:

下载


Домашнее задание 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