Реализовать функцию печати условного ip-адреса. Функцию нужно реализовать для различных входных параметров путём использования механизма SFINAE. Всего нужно выполнить 3 обязательных и один опциональный вариант функции.
- Адрес может быть представлен в виде произвольного целочисленного типа. Представление
не зависит от знака типа. Выводить побайтово, начиная со старшего байта, с символом
.
(символ точки) в качестве разделителя. - Адрес может быть представлен в виде строки. Выводится как есть.
- Адрес может быть представлен в виде контейнеров
std::list
,std::vector
. Выводится содержимое контейнера поэлементно и разделяется.
(одним символом точка). - Опционально адрес может быть представлен в виде
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