ошибка компиляции для boost :: date_time :: days_until_weekday

В настоящее время я играю с boost::date_time, При этом я наткнулся на days_until_weekday (ссылка на документацию) функция, которая представляется мне очень полезной. К сожалению, я получаю ошибку времени компиляции из следующего фрагмента

date f(date d){
return next_weekday(d,  boost::date_time::weekdays::Friday);
}

чтение

> In file included from
> /usr/include/boost/date_time/gregorian/gregorian_types.hpp:25:0,
>                  from /usr/include/boost/date_time/posix_time/posix_time_config.hpp:18,
>                  from /usr/include/boost/date_time/posix_time/posix_time_system.hpp:13,
>                  from /usr/include/boost/date_time/posix_time/ptime.hpp:12,
>                  from /usr/include/boost/date_time/posix_time/posix_time.hpp:15,
>                  from prog.cpp:3: /usr/include/boost/date_time/date_generators.hpp: In instantiation of
> 'typename date_type::duration_type
> boost::date_time::days_until_weekday(const date_type&, const
> weekday_type&) [with date_type = boost::gregorian::date; weekday_type
> = boost::date_time::weekdays; typename date_type::duration_type = boost::gregorian::date_duration]':
> /usr/include/boost/date_time/date_generators.hpp:488:34:   required
> from 'date_type boost::date_time::next_weekday(const date_type&, const
> weekday_type&) [with date_type = boost::gregorian::date; weekday_type
> = boost::date_time::weekdays]' prog.cpp:11:67:   required from here /usr/include/boost/date_time/date_generators.hpp:452:37: error:
> request for member 'as_number' in 'wd', which is of non-class type
> 'const boost::date_time::weekdays'
>      duration_type dd(wd.as_number() - d.day_of_week().as_number());

Идти Вот для вставки моего кода.

Поскольку фрагмент, вызывающий ошибку, очень короткий, у меня действительно нет идей, чтобы это исправить.

Кстати я на бусте 1.60.0 использую clang 3.7.0.

0

Решение

Вам необходимо преобразовать перечисление date_time в объект, который соответствует интерфейсу, ожидаемому типом weekday_type, переданному в функцию. Используйте функцию greg_weekday, чтобы сделать это за вас, например:

    return next_weekday(d, boost::gregorian::greg_weekday(boost::date_time::Friday));

Это компилирует для меня под VS2015 и повысить 1,53.

Ссылка на документацию для этой функции:
greg_weekday

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]