项目作者: azbyx
项目描述 :
Using SFINAE to overload functions
高级语言: C++
项目地址: git://github.com/azbyx/print_ip.git
Домашнее задание 03

Условие задания
Реализовать функцию печати условного 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