C/C++

Помогите пожалуйста решить С++

Определить функцию, возвращающую количество дней до конца месяца. Выполнить перегрузку функции для следующих типов параметров:
2.1. Структура «дата» (год, месяц, день).
2.2. Три целочисленных параметра: год, месяц, день.
2.3. Два целочисленных параметра: месяц, день (считать передаваемые числа датой текущего года).
Построить соответствующий шаблон функции (с переменным числом параметров).
НА С++
 #include  
using namespace std;

struct date
{
unsigned short year;
unsigned short month;
unsigned short day;
};

const bool is_high(const unsigned& year)
{
return (!(year % 400) || year % 100) && !(year % 4);
}

const unsigned remain(const date& dat)
{
char mon[12]{ 31,28,31,30,31,30,31,31,30,31,30,31 };
return mon[dat.month - 1] + (dat.month == 2 ? is_high(dat.year) : 0) - dat.day;
}
const unsigned remain(const unsigned short& year, const unsigned short& mon, const unsigned short& day)
{
date Date{ year, mon, day };
return remain(Date);
}
const unsigned remain(const unsigned short& mon, const unsigned short& day)
{
time_t tm = time(NULL); //get time (in sec)
auto now = gmtime(&tm); //get struct time (since 1900.1.1)
date Date{ now->tm_year + 1900, mon, day };
return remain(Date);
}


int main()
{
cout
Ruslan Savchuk
Ruslan Savchuk
51 416
Лучший ответ
Ха, это существо на экономическом и не знает темы((( хотя царю нужны ту́пики)
ВМ
Вася Мареев
79 213
Сильно не судите.
 #include  
using namespace std;
enum Months {
JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
};
struct Date {
int year, day;
Months months;
bool visokosniy_God;
};
int leftDays(Date& date) {
int left_Days;

if (date.months == FEB) {
if (date.visokosniy_God == true) {
left_Days = 29 - date.day;
return left_Days;
}
else {
left_Days = 28 - date.day;
}
}
else {
if (date.months % 2 == 0) {
left_Days = 30 - date.day;
return left_Days;
}
else {
left_Days = 31 - date.day;
return left_Days;
}
}
return 0;
}
int leftDays(int year, Months months, int day) {
int left_Days;

if (months == FEB) {
left_Days = 28 - day;
return left_Days;
}
else {

if (months % 2 == 0) {
left_Days = 30 - day;
return left_Days;
}
else {
left_Days = 31 - day;
return left_Days;
}
}
return 0;
}
int leftDays(Months months, int day) {
int left_Days;

if (months == FEB) {
left_Days = 28 - day;
return left_Days;
}
else {

if (months % 2 == 0) {
left_Days = 30 - day;
return left_Days;
}
else {
left_Days = 31 - day;
return left_Days;
}
}
return 0;
}

template
int leftDays(T year, T months, T day) {
int left_Days;

if (months == FEB) {
left_Days = 28 - day;
return left_Days;
}
else {

if (months % 2 == 0) {
left_Days = 30 - day;
return left_Days;
}
else {
left_Days = 31 - day;
return left_Days;
}
}
return 0;

}

template
int leftDays(T months, T day) {
int left_Days;

if (months == FEB) {
left_Days = 28 - day;
return left_Days;
}
else {

if (months % 2 == 0) {
left_Days = 30 - day;
return left_Days;
}
else {
left_Days = 31 - day;
return left_Days;
}
}
return 0;

}
int main() {



return 0;
}