Ich spiele gerade mit boost::date_time
herum. Dabei stieß ich auf die Funktion days_until_weekday
(documentation link), die mir sehr nützlich erscheint. Leider erhalte ich einen Kompilierung Fehler aus dem Snippet folgendenKompilierfehler für boost :: date_time :: days_until_weekday
date f(date d){
return next_weekday(d, boost::date_time::weekdays::Friday);
}
Lese
> 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());
Go here für eine Paste aus meinem Code.
Da das Schnipsel, das den Fehler verursacht, so kurz ist, habe ich wirklich keine Ideen, um das zu beheben.
Übrigens bin ich auf Boost 1.60.0 mit clang 3.7.0.
Solange Sie die Reifen von Datum/Zeit-Libs sind Tritte, hier ist ein auf der Basis der C++ 11 chrono: https: // Github .com/HowardHinnant/date Die Syntax für dieselbe Operation ist 'return d + (Datum :: fr - Datum :: Wochentag {d});'. Der vorherige Freitag würde wie folgt aussehen: return d - (date :: wochentag {d} - date :: fri); '. –