]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/ceph_time: move operator<<(ostream&, timespan&) into std namespace
authorKefu Chai <kchai@redhat.com>
Thu, 7 Jan 2021 07:17:45 +0000 (15:17 +0800)
committerKefu Chai <kchai@redhat.com>
Fri, 8 Jan 2021 05:57:18 +0000 (13:57 +0800)
otherwise compiler is not able to find it as the "timespan" here is
actually a class defined in std namespace, even it has an alias defined
in ceph namespace like:

typedef std::chrono::duration<rep, std::nano> timespan;

but this does not make it a member of "ceph" namespace. for more details
on the lookup rules, see https://en.cppreference.com/w/cpp/language/adl

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/common/ceph_time.cc
src/common/ceph_time.h

index aa72f65cc7023f49a69f20672c4150d6fa2922e5..9b85fc88224d3edb807176b0f21c1e2255127a8d 100644 (file)
@@ -106,13 +106,6 @@ std::ostream& operator<<(std::ostream& m,
           << 's';
 }
 
-std::ostream& operator<<(std::ostream& m, const timespan& t) {
-  static_assert(std::is_unsigned_v<timespan::rep>);
-  using seconds_t = std::chrono::duration<float>;
-  fmt::print(m, "{:.9}", std::chrono::duration_cast<seconds_t>(t));
-  return m;
-}
-
 template<typename Clock,
         typename std::enable_if<!Clock::is_steady>::type*>
 std::ostream& operator<<(std::ostream& m,
@@ -327,3 +320,12 @@ std::chrono::seconds parse_timespan(const std::string& s)
 }
 
 }
+
+namespace std {
+ostream& operator<<(ostream& m, const ::ceph::timespan& t) {
+  static_assert(is_unsigned_v<::ceph::timespan::rep>);
+  using seconds_t = chrono::duration<float>;
+  ::fmt::print(m, "{:.9}", chrono::duration_cast<seconds_t>(t));
+  return m;
+}
+} // namespace std
index 005556cb7f79ae585d98219443475fbdc6a1e0b0..663d05f8feb2b0f14f5979cb378aa60261ad7514 100644 (file)
@@ -428,7 +428,6 @@ inline std::optional<timespan> maybe_timespan(const double d) {
   return d ? std::make_optional(make_timespan(d)) : std::nullopt;
 }
 
-std::ostream& operator<<(std::ostream& m, const timespan& t);
 template<typename Clock,
         typename std::enable_if<!Clock::is_steady>::type* = nullptr>
 std::ostream& operator<<(std::ostream& m,
@@ -519,4 +518,8 @@ static Rep to_microseconds(T t) {
 
 } // namespace ceph
 
+namespace std {
+ostream& operator<<(ostream& m, const ::ceph::timespan& t);
+}
+
 #endif // COMMON_CEPH_TIME_H