Tested x86_64-linux. Pushed to trunk. -- >8 --
We define these with the 'struct' keyword, but the standard uses 'class'. This results in warnings if users try to refer to them using elaborated type specifiers. libstdc++-v3/ChangeLog: * include/bits/chrono.h (duration, time_point): Change 'struct' to 'class'. --- libstdc++-v3/include/bits/chrono.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libstdc++-v3/include/bits/chrono.h b/libstdc++-v3/include/bits/chrono.h index cabf61264d8..496e9485a73 100644 --- a/libstdc++-v3/include/bits/chrono.h +++ b/libstdc++-v3/include/bits/chrono.h @@ -59,11 +59,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// `chrono::duration` represents a distance between two points in time template<typename _Rep, typename _Period = ratio<1>> - struct duration; + class duration; /// `chrono::time_point` represents a point in time as measured by a clock template<typename _Clock, typename _Dur = typename _Clock::duration> - struct time_point; + class time_point; /// @} } @@ -431,14 +431,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// @endcond template<typename _Rep, typename _Period> - struct duration + class duration { static_assert(!__is_duration<_Rep>::value, "rep cannot be a duration"); static_assert(__is_ratio<_Period>::value, "period must be a specialization of ratio"); static_assert(_Period::num > 0, "period must be positive"); - private: template<typename _Rep2> using __is_float = treat_as_floating_point<_Rep2>; @@ -844,11 +843,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #undef _GLIBCXX_CHRONO_INT64_T template<typename _Clock, typename _Dur> - struct time_point + class time_point { static_assert(__is_duration<_Dur>::value, "duration must be a specialization of std::chrono::duration"); + public: typedef _Clock clock; typedef _Dur duration; typedef typename duration::rep rep; -- 2.38.1