diff --git a/include/etl/private/chrono/day.h b/include/etl/private/chrono/day.h
index f4f5c00b..60bdfe44 100644
--- a/include/etl/private/chrono/day.h
+++ b/include/etl/private/chrono/day.h
@@ -64,7 +64,7 @@ namespace etl
//***********************************************************************
/// Copy constructor
//***********************************************************************
- ETL_CONSTEXPR day(const etl::chrono::day& other) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 day(const etl::chrono::day& other) ETL_NOEXCEPT
: value(other.value)
{
}
@@ -152,6 +152,7 @@ namespace etl
//***********************************************************************
/// Returns true if the day is within the valid 1 to 31 range
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return (value >= 1U) && (value <= 31U);
@@ -171,6 +172,7 @@ namespace etl
/// else if day > other, returns 1;
/// else returns 0;
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 int compare(const day& other) const ETL_NOEXCEPT
{
if (value < other.value) return -1;
@@ -182,7 +184,8 @@ namespace etl
//***********************************************************************
/// The minimum day value for which ok() will return true
//***********************************************************************
- static ETL_CONSTEXPR etl::chrono::day min() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 etl::chrono::day min() ETL_NOEXCEPT
{
return etl::chrono::day(1);
}
@@ -190,7 +193,8 @@ namespace etl
//***********************************************************************
/// The maximum day value for which ok() will return true
//***********************************************************************
- static ETL_CONSTEXPR etl::chrono::day max() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 etl::chrono::day max() ETL_NOEXCEPT
{
return etl::chrono::day(31);
}
diff --git a/include/etl/private/chrono/duration.h b/include/etl/private/chrono/duration.h
index 932661d7..9aa84807 100644
--- a/include/etl/private/chrono/duration.h
+++ b/include/etl/private/chrono/duration.h
@@ -71,19 +71,22 @@ namespace etl
struct duration_values
{
//***********************************************************************
+ ETL_NODISCARD
static ETL_CONSTEXPR TRep zero() ETL_NOEXCEPT
{
return TRep(0);
}
//***********************************************************************
- static ETL_CONSTEXPR TRep min() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 TRep min() ETL_NOEXCEPT
{
return etl::numeric_limits::min();
}
//***********************************************************************
- static ETL_CONSTEXPR TRep max() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 TRep max() ETL_NOEXCEPT
{
return etl::numeric_limits::max();
}
@@ -113,14 +116,14 @@ namespace etl
}
//***********************************************************************
- ETL_CONSTEXPR duration(const etl::chrono::duration& other) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 duration(const etl::chrono::duration& other) ETL_NOEXCEPT
: value(other.value)
{
}
//***********************************************************************
template
- ETL_CONSTEXPR explicit duration(const TRep2& value_) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 explicit duration(const TRep2& value_) ETL_NOEXCEPT
: value(static_cast(value_))
{
}
@@ -171,24 +174,28 @@ namespace etl
}
//***********************************************************************
+ ETL_NODISCARD
static ETL_CONSTEXPR14 etl::chrono::duration zero() ETL_NOEXCEPT
{
return etl::chrono::duration(etl::chrono::duration_values::zero());
}
//***********************************************************************
+ ETL_NODISCARD
static ETL_CONSTEXPR14 etl::chrono::duration min() ETL_NOEXCEPT
{
return etl::chrono::duration(etl::chrono::duration_values::min());
}
//***********************************************************************
+ ETL_NODISCARD
static ETL_CONSTEXPR14 etl::chrono::duration max() ETL_NOEXCEPT
{
return etl::chrono::duration(etl::chrono::duration_values::max());
}
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::duration absolute() const ETL_NOEXCEPT
{
return etl::chrono::duration(value < 0 ? -value : value);
diff --git a/include/etl/private/chrono/hh_mm_ss.h b/include/etl/private/chrono/hh_mm_ss.h
index 53e522fb..3dac6a5f 100644
--- a/include/etl/private/chrono/hh_mm_ss.h
+++ b/include/etl/private/chrono/hh_mm_ss.h
@@ -105,8 +105,7 @@ namespace etl
//***********************************************************************
/// Default constructor.
//***********************************************************************
- ETL_NODISCARD
- ETL_CONSTEXPR14
+ ETL_CONSTEXPR
hh_mm_ss() ETL_NOEXCEPT
: d(TDuration::zero())
{
@@ -115,7 +114,6 @@ namespace etl
//***********************************************************************
/// Construct from duration.
//***********************************************************************
- ETL_NODISCARD
ETL_CONSTEXPR14
explicit hh_mm_ss(TDuration d_) ETL_NOEXCEPT
: d(d_)
@@ -179,6 +177,7 @@ namespace etl
//***********************************************************************
/// Returns the duration.
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 explicit operator precision() const ETL_NOEXCEPT
{
return to_duration();
diff --git a/include/etl/private/chrono/last_spec.h b/include/etl/private/chrono/last_spec.h
index 870e99b4..71bda5fe 100644
--- a/include/etl/private/chrono/last_spec.h
+++ b/include/etl/private/chrono/last_spec.h
@@ -38,9 +38,9 @@ namespace etl
{
struct last_spec
{
- //ETL_CONSTEXPR14 explicit last_spec()
- //{
- //}
+ ETL_CONSTEXPR explicit last_spec()
+ {
+ }
};
#if ETL_USING_CPP17
diff --git a/include/etl/private/chrono/month.h b/include/etl/private/chrono/month.h
index ff6d7c8c..abd98de9 100644
--- a/include/etl/private/chrono/month.h
+++ b/include/etl/private/chrono/month.h
@@ -75,7 +75,7 @@ namespace etl
//***********************************************************************
/// Copy constructor
//***********************************************************************
- ETL_CONSTEXPR month(const etl::chrono::month& other) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 month(const etl::chrono::month& other) ETL_NOEXCEPT
: value(other.value)
{
}
@@ -157,7 +157,8 @@ namespace etl
//***********************************************************************
/// Returns true if the month is within the valid 1 to 31 range
//***********************************************************************
- ETL_CONSTEXPR bool ok() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return (value >= 1U) && (value <= 12U);
}
@@ -168,6 +169,7 @@ namespace etl
/// else if month > other, returns 1;
/// else returns 0;
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 int compare(const month& other) const ETL_NOEXCEPT
{
if (value < other.value) return -1;
@@ -179,7 +181,8 @@ namespace etl
//***********************************************************************
/// The minimum month value for which ok() will return true
//***********************************************************************
- static ETL_CONSTEXPR etl::chrono::month min() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 etl::chrono::month min() ETL_NOEXCEPT
{
return etl::chrono::month(1);
}
@@ -187,7 +190,8 @@ namespace etl
//***********************************************************************
/// The maximum month value for which ok() will return true
//***********************************************************************
- static ETL_CONSTEXPR etl::chrono::month max() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 etl::chrono::month max() ETL_NOEXCEPT
{
return etl::chrono::month(12);
}
@@ -195,7 +199,7 @@ namespace etl
//***********************************************************************
/// Conversion operator to unsigned int
//***********************************************************************
- ETL_CONSTEXPR operator unsigned() const ETL_NOEXCEPT
+ ETL_CONSTEXPR14 operator unsigned() const ETL_NOEXCEPT
{
return static_cast(value);
}
diff --git a/include/etl/private/chrono/month_day.h b/include/etl/private/chrono/month_day.h
index 073a227f..fbbb4408 100644
--- a/include/etl/private/chrono/month_day.h
+++ b/include/etl/private/chrono/month_day.h
@@ -48,7 +48,7 @@ namespace etl
//*************************************************************************
/// Construct from month and day.
//*************************************************************************
- ETL_CONSTEXPR month_day(const etl::chrono::month& m_,
+ ETL_CONSTEXPR14 month_day(const etl::chrono::month& m_,
const etl::chrono::day& d_) ETL_NOEXCEPT
: m(m_)
, d(d_)
@@ -58,7 +58,8 @@ namespace etl
//*************************************************************************
/// Returns the month.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::month month() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::month month() const ETL_NOEXCEPT
{
return m;
}
@@ -66,7 +67,8 @@ namespace etl
//*************************************************************************
/// Returns the day.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::day day() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::day day() const ETL_NOEXCEPT
{
return d;
}
@@ -74,6 +76,7 @@ namespace etl
//*************************************************************************
/// Returns true if the month/day is valid.
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
if (!m.ok() || !d.ok())
@@ -188,6 +191,7 @@ namespace etl
/// else if day > other.day, returns 1;
/// else returns 0;
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 int compare(const month_day& other) const ETL_NOEXCEPT
{
if (m < other.m) return -1;
diff --git a/include/etl/private/chrono/month_weekday.h b/include/etl/private/chrono/month_weekday.h
index 5c489c06..444f91a0 100644
--- a/include/etl/private/chrono/month_weekday.h
+++ b/include/etl/private/chrono/month_weekday.h
@@ -43,8 +43,8 @@ namespace etl
//*************************************************************************
/// Construct from month and weekday_indexed.
//*************************************************************************
- ETL_CONSTEXPR month_weekday(const etl::chrono::month& m_,
- const etl::chrono::weekday_indexed& wdi_) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 month_weekday(const etl::chrono::month& m_,
+ const etl::chrono::weekday_indexed& wdi_) ETL_NOEXCEPT
: m(m_)
, wdi(wdi_)
{
@@ -53,7 +53,8 @@ namespace etl
//*************************************************************************
/// Returns the month.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::month month() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::month month() const ETL_NOEXCEPT
{
return m;
}
@@ -61,7 +62,8 @@ namespace etl
//*************************************************************************
/// Returns the weekday_indexed.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::weekday_indexed weekday_indexed() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::weekday_indexed weekday_indexed() const ETL_NOEXCEPT
{
return wdi;
}
@@ -69,7 +71,8 @@ namespace etl
//*************************************************************************
/// Returns true if the month/day is valid.
//*************************************************************************
- ETL_CONSTEXPR bool ok() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return m.ok() && wdi.ok();
}
@@ -108,7 +111,7 @@ namespace etl
//*************************************************************************
/// Construct from month and weekday_indexed.
//*************************************************************************
- ETL_CONSTEXPR month_weekday_last(const etl::chrono::month& m_,
+ ETL_CONSTEXPR14 month_weekday_last(const etl::chrono::month& m_,
const etl::chrono::weekday_last& wdl_) ETL_NOEXCEPT
: m(m_)
, wdl(wdl_)
@@ -118,7 +121,8 @@ namespace etl
//*************************************************************************
/// Returns the month.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::month month() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::month month() const ETL_NOEXCEPT
{
return m;
}
@@ -126,7 +130,8 @@ namespace etl
//*************************************************************************
/// Returns the weekday_indexed.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::weekday_last weekday_last() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::weekday_last weekday_last() const ETL_NOEXCEPT
{
return wdl;
}
@@ -134,7 +139,8 @@ namespace etl
//*************************************************************************
/// Returns true if the month/day is valid.
//*************************************************************************
- ETL_CONSTEXPR bool ok() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return m.ok() && wdl.ok();
}
diff --git a/include/etl/private/chrono/time_point.h b/include/etl/private/chrono/time_point.h
index 007095ec..142ae385 100644
--- a/include/etl/private/chrono/time_point.h
+++ b/include/etl/private/chrono/time_point.h
@@ -61,7 +61,7 @@ namespace etl
//***************************************************************************
/// Construct from a duration.
//***************************************************************************
- ETL_CONSTEXPR explicit time_point(const duration& dur_) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 explicit time_point(const duration& dur_) ETL_NOEXCEPT
: dur(dur_)
{
}
@@ -69,7 +69,7 @@ namespace etl
//***************************************************************************
/// Copy constructor.
//***************************************************************************
- ETL_CONSTEXPR time_point(const time_point& rhs) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 time_point(const time_point& rhs) ETL_NOEXCEPT
: dur(rhs.dur)
{
}
@@ -96,6 +96,7 @@ namespace etl
//***************************************************************************
/// Returns a duration representing the amount of time between this and the clock's epoch.
//***************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 duration time_since_epoch() const ETL_NOEXCEPT
{
return dur;
@@ -124,7 +125,8 @@ namespace etl
//***************************************************************************
/// Returns a time_point with the smallest possible duration.
//***************************************************************************
- static ETL_CONSTEXPR time_point min() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 time_point min() ETL_NOEXCEPT
{
return time_point(duration::min());
}
@@ -132,7 +134,8 @@ namespace etl
//***************************************************************************
/// Returns a time_point with the largest possible duration.
//***************************************************************************
- static ETL_CONSTEXPR time_point max() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 time_point max() ETL_NOEXCEPT
{
return time_point(duration::max());
}
@@ -146,6 +149,7 @@ namespace etl
/// Rounds down a duration to the nearest lower precision.
//***********************************************************************
template
+ ETL_NODISCARD
ETL_CONSTEXPR14
etl::chrono::time_point
floor(const etl::chrono::time_point& tp) ETL_NOEXCEPT
@@ -157,6 +161,7 @@ namespace etl
/// Rounds up a duration to the nearest higher precision.
//***********************************************************************
template
+ ETL_NODISCARD
ETL_CONSTEXPR14
etl::chrono::time_point
ceil(const etl::chrono::time_point& tp) ETL_NOEXCEPT
@@ -169,6 +174,7 @@ namespace etl
/// If the duration is exactly halfway, it rounds away from zero.
//***********************************************************************
template
+ ETL_NODISCARD
ETL_CONSTEXPR14
etl::chrono::time_point
round(const etl::chrono::time_point& tp) ETL_NOEXCEPT
@@ -177,6 +183,7 @@ namespace etl
}
template
+ ETL_NODISCARD
ETL_CONSTEXPR14
etl::chrono::time_point
time_point_cast(const etl::chrono::time_point& tp) ETL_NOEXCEPT
diff --git a/include/etl/private/chrono/weekday.h b/include/etl/private/chrono/weekday.h
index f3e8a37a..c9273c19 100644
--- a/include/etl/private/chrono/weekday.h
+++ b/include/etl/private/chrono/weekday.h
@@ -71,25 +71,21 @@ namespace etl
//*************************************************************************
/// Construct from sys_days.
//*************************************************************************
- ETL_CONSTEXPR weekday(const etl::chrono::sys_days& sd) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 weekday(const etl::chrono::sys_days& sd) ETL_NOEXCEPT
+ : value(255U)
{
- // Get number of days since epoch
+ // Get number of days since epoch.
etl::chrono::days days_since_epoch = sd.time_since_epoch();
- // Convert to weekday manually: epoch was Thursday (4)
+ // Convert to weekday. Beginning of the epoch was a Thursday (4).
value = (days_since_epoch.count() + 4) % 7;
-
- // Normalize in case of negative modulo
- if (value < 0)
- {
- value += 7;
- }
}
//*************************************************************************
/// Construct from local_days.
//*************************************************************************
- ETL_CONSTEXPR weekday(const etl::chrono::local_days& ld) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 weekday(const etl::chrono::local_days& ld) ETL_NOEXCEPT
+ : value(255U)
{
weekday wd(sys_days(ld.time_since_epoch()));
@@ -99,7 +95,7 @@ namespace etl
//***********************************************************************
/// Copy constructor
//***********************************************************************
- ETL_CONSTEXPR weekday(const etl::chrono::weekday& other) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 weekday(const etl::chrono::weekday& other) ETL_NOEXCEPT
: value(other.value)
{
}
@@ -181,7 +177,8 @@ namespace etl
//***********************************************************************
/// Returns true if the weekday is within the valid 1 to 31 range
//***********************************************************************
- ETL_CONSTEXPR bool ok() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return (c_encoding() <= 6U);
}
@@ -190,7 +187,8 @@ namespace etl
/// The minimum weekday value for which ok() will return true
/// C encoding.
//***********************************************************************
- static ETL_CONSTEXPR unsigned min() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 unsigned min() ETL_NOEXCEPT
{
return 0;
}
@@ -199,7 +197,8 @@ namespace etl
/// The maximum weekday value for which ok() will return true
/// C encoding.
//***********************************************************************
- static ETL_CONSTEXPR unsigned max() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 unsigned max() ETL_NOEXCEPT
{
return 6;
}
@@ -207,7 +206,8 @@ namespace etl
//***********************************************************************
/// Get the C encoding of the weekday
//***********************************************************************
- ETL_CONSTEXPR unsigned c_encoding() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 unsigned c_encoding() const ETL_NOEXCEPT
{
return value;
}
@@ -215,7 +215,8 @@ namespace etl
//***********************************************************************
/// Get the ISO encoding of the weekday
//***********************************************************************
- ETL_CONSTEXPR unsigned iso_encoding() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 unsigned iso_encoding() const ETL_NOEXCEPT
{
return (value == 0U) ? 7U : value;
}
@@ -223,17 +224,20 @@ namespace etl
//***********************************************************************
/// Index operator from index
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::weekday_indexed operator[](unsigned index) const ETL_NOEXCEPT;
//***********************************************************************
/// Index operator from etl::chrono::last_spec
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::weekday_last operator[](etl::chrono::last_spec last) const ETL_NOEXCEPT;
//***********************************************************************
/// Returns true if the day is a weekend.
//***********************************************************************
- ETL_CONSTEXPR bool is_weekend() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool is_weekend() const ETL_NOEXCEPT
{
return (c_encoding() == 0U) || (c_encoding() == 6U);
}
@@ -321,7 +325,7 @@ namespace etl
inline constexpr etl::chrono::weekday Thursday{ 4U };
inline constexpr etl::chrono::weekday Friday{ 5U };
inline constexpr etl::chrono::weekday Saturday{ 6U };
-#else
+#else
static ETL_CONSTANT etl::chrono::weekday Sunday{ 0U };
static ETL_CONSTANT etl::chrono::weekday Monday{ 1U };
static ETL_CONSTANT etl::chrono::weekday Tuesday{ 2U };
@@ -350,7 +354,7 @@ namespace etl
//***********************************************************************
/// Construct from weekday and index
//***********************************************************************
- ETL_CONSTEXPR weekday_indexed(const etl::chrono::weekday& wd_, unsigned index_) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 weekday_indexed(const etl::chrono::weekday& wd_, unsigned index_) ETL_NOEXCEPT
: wd(wd_)
, i(static_cast(index_))
{
@@ -359,7 +363,7 @@ namespace etl
//***********************************************************************
/// Copy constructor
//***********************************************************************
- ETL_CONSTEXPR weekday_indexed(const etl::chrono::weekday_indexed& other) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 weekday_indexed(const etl::chrono::weekday_indexed& other) ETL_NOEXCEPT
: wd(other.wd)
, i(other.i)
{
@@ -379,7 +383,8 @@ namespace etl
//***********************************************************************
/// Get weekday
//***********************************************************************
- ETL_NODISCARD ETL_CONSTEXPR etl::chrono::weekday weekday() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_NODISCARD ETL_CONSTEXPR14 etl::chrono::weekday weekday() const ETL_NOEXCEPT
{
return wd;
}
@@ -387,7 +392,8 @@ namespace etl
//***********************************************************************
/// Get index
//***********************************************************************
- ETL_NODISCARD ETL_CONSTEXPR unsigned index() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_NODISCARD ETL_CONSTEXPR14 unsigned index() const ETL_NOEXCEPT
{
return i;
}
@@ -395,7 +401,8 @@ namespace etl
//***********************************************************************
/// Returns true if the weekday and index are valid
//***********************************************************************
- ETL_NODISCARD ETL_CONSTEXPR bool ok() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_NODISCARD ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return wd.ok() && (i >= 1U) && (i <= 5U);
}
@@ -433,7 +440,7 @@ namespace etl
//***********************************************************************
/// Construct from unsigned
//***********************************************************************
- ETL_CONSTEXPR explicit weekday_last(const etl::chrono::weekday& wd_) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 explicit weekday_last(const etl::chrono::weekday& wd_) ETL_NOEXCEPT
: wd(wd_)
{
}
@@ -441,7 +448,7 @@ namespace etl
//***********************************************************************
/// Copy constructor
//***********************************************************************
- ETL_CONSTEXPR weekday_last(const etl::chrono::weekday_last& other) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 weekday_last(const etl::chrono::weekday_last& other) ETL_NOEXCEPT
: wd(other.wd)
{
}
diff --git a/include/etl/private/chrono/year.h b/include/etl/private/chrono/year.h
index 9278b7d4..7785b206 100644
--- a/include/etl/private/chrono/year.h
+++ b/include/etl/private/chrono/year.h
@@ -64,7 +64,7 @@ namespace etl
//***********************************************************************
/// Copy constructor
//***********************************************************************
- ETL_CONSTEXPR year(const etl::chrono::year& other) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 year(const etl::chrono::year& other) ETL_NOEXCEPT
: value(other.value)
{
}
@@ -144,7 +144,8 @@ namespace etl
//***********************************************************************
/// Returns true if the year is within the valid -32767 to 32767 range
//***********************************************************************
- ETL_CONSTEXPR bool ok() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return (value != etl::integral_limits::min);
}
@@ -152,7 +153,8 @@ namespace etl
//***********************************************************************
/// The minimum year value for which ok() will return true
//***********************************************************************
- static ETL_CONSTEXPR etl::chrono::year min() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 etl::chrono::year min() ETL_NOEXCEPT
{
return etl::chrono::year(-32767);
}
@@ -160,7 +162,8 @@ namespace etl
//***********************************************************************
/// The maximum year value for which ok() will return true
//***********************************************************************
- static ETL_CONSTEXPR etl::chrono::year max() ETL_NOEXCEPT
+ ETL_NODISCARD
+ static ETL_CONSTEXPR14 etl::chrono::year max() ETL_NOEXCEPT
{
return etl::chrono::year(32767);
}
@@ -168,7 +171,8 @@ namespace etl
//***********************************************************************
/// Returns true if the year is a leap year
//***********************************************************************
- ETL_CONSTEXPR bool is_leap() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool is_leap() const ETL_NOEXCEPT
{
return ((value % 4) == 0) && // Divisible by 4
(((value % 100) != 0) || // but not divisible by 100
@@ -178,7 +182,7 @@ namespace etl
//***********************************************************************
/// Conversion operator to unsigned int
//***********************************************************************
- ETL_CONSTEXPR operator int() const ETL_NOEXCEPT
+ ETL_CONSTEXPR14 operator int() const ETL_NOEXCEPT
{
return static_cast(value);
}
diff --git a/include/etl/private/chrono/year_month.h b/include/etl/private/chrono/year_month.h
index 0f121eb1..90386396 100644
--- a/include/etl/private/chrono/year_month.h
+++ b/include/etl/private/chrono/year_month.h
@@ -43,7 +43,7 @@ namespace etl
//*************************************************************************
/// Default constructor.
//*************************************************************************
- year_month()
+ ETL_CONSTEXPR year_month()
: y()
, m()
{
@@ -52,8 +52,8 @@ namespace etl
//*************************************************************************
/// Construct from month and day.
//*************************************************************************
- ETL_CONSTEXPR year_month(const etl::chrono::year& y_,
- const etl::chrono::month& m_) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 year_month(const etl::chrono::year& y_,
+ const etl::chrono::month& m_) ETL_NOEXCEPT
: y(y_)
, m(m_)
{
@@ -62,7 +62,8 @@ namespace etl
//*************************************************************************
/// Returns the year.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::year year() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::year year() const ETL_NOEXCEPT
{
return y;
}
@@ -70,7 +71,8 @@ namespace etl
//*************************************************************************
/// Returns the month.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::month month() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::month month() const ETL_NOEXCEPT
{
return m;
}
@@ -78,7 +80,8 @@ namespace etl
//*************************************************************************
/// Returns true if the month/day is valid.
//*************************************************************************
- ETL_CONSTEXPR bool ok() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return y.ok() && m.ok();
}
@@ -150,7 +153,7 @@ namespace etl
/// Equality operator.
//*************************************************************************
friend ETL_CONSTEXPR14 bool operator ==(const etl::chrono::year_month& lhs,
- const etl::chrono::year_month& rhs) ETL_NOEXCEPT
+ const etl::chrono::year_month& rhs) ETL_NOEXCEPT
{
return (lhs.y == rhs.y) && (lhs.m == rhs.m);
}
@@ -159,7 +162,7 @@ namespace etl
/// Inequality operator.
//*************************************************************************
friend ETL_CONSTEXPR14 bool operator !=(const etl::chrono::year_month& lhs,
- const etl::chrono::year_month& rhs) ETL_NOEXCEPT
+ const etl::chrono::year_month& rhs) ETL_NOEXCEPT
{
return !(lhs == rhs);
}
diff --git a/include/etl/private/chrono/year_month_day.h b/include/etl/private/chrono/year_month_day.h
index 72ef4e59..68d8eed7 100644
--- a/include/etl/private/chrono/year_month_day.h
+++ b/include/etl/private/chrono/year_month_day.h
@@ -58,9 +58,9 @@ namespace etl
//*************************************************************************
/// Construct from month and day.
//*************************************************************************
- ETL_CONSTEXPR year_month_day(const etl::chrono::year& y_,
- const etl::chrono::month& m_,
- const etl::chrono::day& d_) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 year_month_day(const etl::chrono::year& y_,
+ const etl::chrono::month& m_,
+ const etl::chrono::day& d_) ETL_NOEXCEPT
: y(y_)
, m(m_)
, d(d_)
@@ -70,12 +70,12 @@ namespace etl
//*************************************************************************
/// Construct from year_month_day_last.
//*************************************************************************
- ETL_CONSTEXPR year_month_day(const etl::chrono::year_month_day_last& ymdl) ETL_NOEXCEPT;
+ ETL_CONSTEXPR14 year_month_day(const etl::chrono::year_month_day_last& ymdl) ETL_NOEXCEPT;
//*************************************************************************
/// Construct from sys_days.
//*************************************************************************
- ETL_CONSTEXPR year_month_day(const etl::chrono::sys_days& sd) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 year_month_day(const etl::chrono::sys_days& sd) ETL_NOEXCEPT
{
// Days since 1970-01-01
int days_since_epoch = static_cast(sd.time_since_epoch().count());
@@ -125,7 +125,7 @@ namespace etl
//*************************************************************************
/// Construct from sys_days.
//*************************************************************************
- ETL_CONSTEXPR year_month_day(const etl::chrono::local_days& ld) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 year_month_day(const etl::chrono::local_days& ld) ETL_NOEXCEPT
{
etl::chrono::year_month_day ymd = sys_days(ld.time_since_epoch());
@@ -137,7 +137,8 @@ namespace etl
//*************************************************************************
/// Returns the year.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::year year() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::year year() const ETL_NOEXCEPT
{
return y;
}
@@ -145,7 +146,8 @@ namespace etl
//*************************************************************************
/// Returns the month.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::month month() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::month month() const ETL_NOEXCEPT
{
return m;
}
@@ -153,7 +155,8 @@ namespace etl
//*************************************************************************
/// Returns the day.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::day day() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::day day() const ETL_NOEXCEPT
{
return d;
}
@@ -161,6 +164,7 @@ namespace etl
//*************************************************************************
/// Returns true if the year/month/day is valid.
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
// Check if the year, month, and day are valid individually
@@ -228,7 +232,7 @@ namespace etl
/// Equality operator.
//*************************************************************************
friend ETL_CONSTEXPR14 bool operator ==(const etl::chrono::year_month_day& lhs,
- const etl::chrono::year_month_day& rhs) ETL_NOEXCEPT
+ const etl::chrono::year_month_day& rhs) ETL_NOEXCEPT
{
return (lhs.y == rhs.y) && (lhs.m == rhs.m) && (lhs.d == rhs.d);
}
@@ -237,7 +241,7 @@ namespace etl
/// Inequality operator.
//*************************************************************************
friend ETL_CONSTEXPR14 bool operator !=(const etl::chrono::year_month_day& lhs,
- const etl::chrono::year_month_day& rhs) ETL_NOEXCEPT
+ const etl::chrono::year_month_day& rhs) ETL_NOEXCEPT
{
return !(lhs == rhs);
}
@@ -277,6 +281,7 @@ namespace etl
/// else if day > other.day, returns 1;
/// else returns 0;
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 int compare(const year_month_day& other) const ETL_NOEXCEPT
{
if (y < other.y) return -1;
@@ -292,6 +297,7 @@ namespace etl
//***********************************************************************
/// Converts to etl::chrono::sys_days
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 operator etl::chrono::sys_days() const ETL_NOEXCEPT
{
int day_count = 0;
@@ -322,6 +328,7 @@ namespace etl
//***********************************************************************
/// Converts to etl::chrono::local_days
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 explicit operator etl::chrono::local_days() const ETL_NOEXCEPT
{
return local_days(sys_days(*this).time_since_epoch());
@@ -375,6 +382,7 @@ namespace etl
//*************************************************************************
///
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::year year() const ETL_NOEXCEPT
{
return y;
@@ -383,6 +391,7 @@ namespace etl
//*************************************************************************
///
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::month month() const ETL_NOEXCEPT
{
return m;
@@ -391,6 +400,7 @@ namespace etl
//*************************************************************************
///
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::day day() const ETL_NOEXCEPT
{
etl::chrono::day d = etl::chrono::day(etl::chrono::private_chrono::days_in_month[m]);
@@ -401,6 +411,7 @@ namespace etl
//*************************************************************************
///
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::month_day_last month_day_last() const ETL_NOEXCEPT
{
return etl::chrono::month_day_last(m);
@@ -409,6 +420,7 @@ namespace etl
//*************************************************************************
///
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return y.ok() && m.ok();
@@ -512,7 +524,7 @@ namespace etl
/// Equality operator.
//*************************************************************************
friend ETL_CONSTEXPR14 bool operator ==(const etl::chrono::year_month_day_last& lhs,
- const etl::chrono::year_month_day_last& rhs) ETL_NOEXCEPT
+ const etl::chrono::year_month_day_last& rhs) ETL_NOEXCEPT
{
return (lhs.y == rhs.y) && (lhs.m == rhs.m);
}
@@ -563,6 +575,7 @@ namespace etl
/// else if month > other.month, returns 1;
/// else returns 0;
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 int compare(const year_month_day_last& other) const ETL_NOEXCEPT
{
if (y < other.y) return -1;
@@ -576,6 +589,7 @@ namespace etl
//*************************************************************************
/// Converts to etl::chrono::sys_days
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 operator etl::chrono::sys_days() const ETL_NOEXCEPT
{
etl::chrono::year_month_day ymd(year(), month(), day());
@@ -586,6 +600,7 @@ namespace etl
//*************************************************************************
/// Converts to etl::chrono::local_days
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 explicit operator etl::chrono::local_days() const ETL_NOEXCEPT
{
return local_days(sys_days(*this).time_since_epoch());
@@ -600,7 +615,7 @@ namespace etl
//*************************************************************************
/// Construct from year_month_day_last.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::year_month_day::year_month_day(const etl::chrono::year_month_day_last& ymdl) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 etl::chrono::year_month_day::year_month_day(const etl::chrono::year_month_day_last& ymdl) ETL_NOEXCEPT
: y(ymdl.year())
, m(ymdl.month())
, d(ymdl.day())
diff --git a/include/etl/private/chrono/year_month_weekday.h b/include/etl/private/chrono/year_month_weekday.h
index 613e1372..58d21fa2 100644
--- a/include/etl/private/chrono/year_month_weekday.h
+++ b/include/etl/private/chrono/year_month_weekday.h
@@ -56,9 +56,9 @@ namespace etl
//*************************************************************************
/// Construct from month, day, and weekday_indexed.
//*************************************************************************
- ETL_CONSTEXPR year_month_weekday(const etl::chrono::year& y_,
- const etl::chrono::month& m_,
- const etl::chrono::weekday_indexed& wdi_) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 year_month_weekday(const etl::chrono::year& y_,
+ const etl::chrono::month& m_,
+ const etl::chrono::weekday_indexed& wdi_) ETL_NOEXCEPT
: y(y_)
, m(m_)
, wdi(wdi_)
@@ -68,7 +68,7 @@ namespace etl
//*************************************************************************
/// Construct from sys_days.
//*************************************************************************
- ETL_CONSTEXPR year_month_weekday(const etl::chrono::sys_days& sd) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 year_month_weekday(const etl::chrono::sys_days& sd) ETL_NOEXCEPT
{
// Extract year, month, and day
year_month_day ymd = year_month_day{sd};
@@ -97,7 +97,7 @@ namespace etl
//*************************************************************************
/// Construct from local_days.
//*************************************************************************
- ETL_CONSTEXPR year_month_weekday(const etl::chrono::local_days& ld) ETL_NOEXCEPT
+ ETL_CONSTEXPR14 year_month_weekday(const etl::chrono::local_days& ld) ETL_NOEXCEPT
{
year_month_weekday ymwd(sys_days(ld.time_since_epoch()));
@@ -109,7 +109,8 @@ namespace etl
//*************************************************************************
/// Returns the year.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::year year() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::year year() const ETL_NOEXCEPT
{
return y;
}
@@ -117,7 +118,8 @@ namespace etl
//*************************************************************************
/// Returns the month.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::month month() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::month month() const ETL_NOEXCEPT
{
return m;
}
@@ -125,7 +127,8 @@ namespace etl
//*************************************************************************
/// Returns the weekday.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::weekday weekday() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::weekday weekday() const ETL_NOEXCEPT
{
return wdi.weekday();
}
@@ -133,7 +136,8 @@ namespace etl
//*************************************************************************
/// Returns the weekday index.
//*************************************************************************
- ETL_CONSTEXPR unsigned index() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 unsigned index() const ETL_NOEXCEPT
{
return wdi.index();
}
@@ -141,7 +145,8 @@ namespace etl
//*************************************************************************
/// Returns the weekday_indexed.
//*************************************************************************
- ETL_CONSTEXPR etl::chrono::weekday_indexed weekday_indexed() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 etl::chrono::weekday_indexed weekday_indexed() const ETL_NOEXCEPT
{
return wdi;
}
@@ -149,7 +154,8 @@ namespace etl
//*************************************************************************
/// Returns true if the year/month/day is valid.
//*************************************************************************
- ETL_CONSTEXPR bool ok() const ETL_NOEXCEPT
+ ETL_NODISCARD
+ ETL_CONSTEXPR14 bool ok() const ETL_NOEXCEPT
{
return y.ok() && m.ok() && wdi.ok();
}
@@ -229,6 +235,7 @@ namespace etl
//***********************************************************************
/// Converts to etl::chrono::sys_days
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 operator etl::chrono::sys_days() const ETL_NOEXCEPT
{
if (ok())
@@ -260,6 +267,7 @@ namespace etl
//***********************************************************************
/// Converts to etl::chrono::local_days
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 operator etl::chrono::local_days() const ETL_NOEXCEPT
{
return local_days(sys_days(*this).time_since_epoch());
@@ -294,6 +302,7 @@ namespace etl
//*************************************************************************
/// Returns the year.
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::year year() const ETL_NOEXCEPT
{
return y;
@@ -302,6 +311,7 @@ namespace etl
//*************************************************************************
/// Returns the month.
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::month month() const ETL_NOEXCEPT
{
return m;
@@ -310,6 +320,7 @@ namespace etl
//*************************************************************************
/// Returns the weekday.
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::weekday weekday() const ETL_NOEXCEPT
{
return wdl.weekday();
@@ -318,6 +329,7 @@ namespace etl
//*************************************************************************
/// Returns the weekday_last.
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 etl::chrono::weekday_last weekday_last() const ETL_NOEXCEPT
{
return wdl;
@@ -472,6 +484,7 @@ namespace etl
/// else if month > other.month, returns 1;
/// else returns 0;
//***********************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 int compare(const etl::chrono::year_month_weekday_last& other) const ETL_NOEXCEPT
{
if (y < other.y) return -1;
@@ -485,6 +498,7 @@ namespace etl
//*************************************************************************
/// Converts to etl::chrono::sys_days
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 operator etl::chrono::sys_days() const ETL_NOEXCEPT
{
// Get the last day of the month
@@ -513,6 +527,7 @@ namespace etl
//*************************************************************************
/// Converts to etl::chrono::local_days
//*************************************************************************
+ ETL_NODISCARD
ETL_CONSTEXPR14 explicit operator etl::chrono::local_days() const ETL_NOEXCEPT
{
return local_days(sys_days(*this).time_since_epoch());