]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/multiprecision/detail/digits.hpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / boost / multiprecision / detail / digits.hpp
index 6387011031819759fe8c911362c1154e0a744a68..58d3cc04393bcbfcb66c6a8cd97e64bf0a582ecc 100644 (file)
@@ -8,16 +8,42 @@
 
 namespace boost { namespace multiprecision { namespace detail {
 
-inline unsigned long digits10_2_2(unsigned long d10)
+inline constexpr unsigned long digits10_2_2(unsigned long d10)
 {
    return (d10 * 1000uL) / 301uL + ((d10 * 1000uL) % 301 ? 2u : 1u);
 }
 
-inline unsigned long digits2_2_10(unsigned long d2)
+inline constexpr unsigned long digits2_2_10(unsigned long d2)
 {
    return (d2 * 301uL) / 1000uL;
 }
 
+
+#if ULONG_MAX != SIZE_MAX
+
+inline constexpr std::size_t digits10_2_2(std::size_t d10)
+{
+   return (d10 * 1000uL) / 301uL + ((d10 * 1000uL) % 301 ? 2u : 1u);
+}
+
+inline constexpr std::size_t digits2_2_10(std::size_t d2)
+{
+   return (d2 * 301uL) / 1000uL;
+}
+
+template <class I>
+inline constexpr typename std::enable_if<sizeof(I) <= sizeof(unsigned long), unsigned long>::type digits10_2_2(I d10)
+{
+   return digits10_2_2(static_cast<unsigned long>(d10));
+}
+
+template <class I>
+inline constexpr typename std::enable_if<sizeof(I) <= sizeof(unsigned long), unsigned long>::type digits2_2_10(I d10)
+{
+   return digits2_2_10(static_cast<unsigned long>(d10));
+}
+#endif
+
 }}} // namespace boost::multiprecision::detail
 
 #endif