diff --git a/include/stdplus/handle/copyable.hpp b/include/stdplus/handle/copyable.hpp
index c40b432..3efa90b 100644
--- a/include/stdplus/handle/copyable.hpp
+++ b/include/stdplus/handle/copyable.hpp
@@ -18,7 +18,7 @@
     class HandleF : public Managed<T, As...>::template HandleF<Drop>
     {
       protected:
-        static constexpr bool ref_noexcept =
+        static inline constexpr bool ref_noexcept =
             noexcept(Ref()(std::declval<T>(), std::declval<As&>()...));
 
       public:
diff --git a/include/stdplus/handle/managed.hpp b/include/stdplus/handle/managed.hpp
index 449c377..d0a0ee5 100644
--- a/include/stdplus/handle/managed.hpp
+++ b/include/stdplus/handle/managed.hpp
@@ -35,7 +35,7 @@
     class HandleF
     {
       protected:
-        static constexpr bool drop_noexcept =
+        static inline constexpr bool drop_noexcept =
             noexcept(Drop()(std::declval<T>(), std::declval<As&>()...));
 
       public:
diff --git a/include/stdplus/net/addr/ip.hpp b/include/stdplus/net/addr/ip.hpp
index 2dfcf83..715b9b4 100644
--- a/include/stdplus/net/addr/ip.hpp
+++ b/include/stdplus/net/addr/ip.hpp
@@ -141,7 +141,7 @@
     using type = In4Addr;
     using ToOct = IntToStr<10, uint8_t>;
     // 4 octets * 3 dec chars + 3 separators
-    static constexpr std::size_t buf_size = 12 + ToOct::buf_size;
+    static inline constexpr std::size_t buf_size = 12 + ToOct::buf_size;
 
     template <typename CharT>
     constexpr CharT* operator()(CharT* buf, In4Addr v) const noexcept
@@ -312,7 +312,7 @@
     using type = In6Addr;
     using ToHex = IntToStr<16, uint16_t>;
     // 8 hextets * 4 hex chars + 7 separators
-    static constexpr std::size_t buf_size = 35 + ToHex::buf_size;
+    static inline constexpr std::size_t buf_size = 35 + ToHex::buf_size;
 
     template <typename CharT>
     constexpr CharT* operator()(CharT* buf, In6Addr v) const noexcept
@@ -422,8 +422,8 @@
 struct ToStr<InAnyAddr>
 {
     using type = InAnyAddr;
-    static constexpr std::size_t buf_size = std::max(ToStr<In4Addr>::buf_size,
-                                                     ToStr<In6Addr>::buf_size);
+    static inline constexpr std::size_t buf_size =
+        std::max(ToStr<In4Addr>::buf_size, ToStr<In6Addr>::buf_size);
 
     template <typename CharT>
     constexpr CharT* operator()(CharT* buf, InAnyAddr v) const noexcept
diff --git a/include/stdplus/net/addr/subnet.hpp b/include/stdplus/net/addr/subnet.hpp
index e2da9d1..cbdce20 100644
--- a/include/stdplus/net/addr/subnet.hpp
+++ b/include/stdplus/net/addr/subnet.hpp
@@ -80,7 +80,7 @@
     using Pfx = Pfx_;
 
   private:
-    static constexpr inline std::size_t maxPfx = sizeof(Addr) * 8;
+    static inline constexpr std::size_t maxPfx = sizeof(Addr) * 8;
     static_assert(std::is_unsigned_v<Pfx> && std::is_integral_v<Pfx>);
     static_assert(std::numeric_limits<Pfx>::max() >= maxPfx);
 
@@ -258,7 +258,7 @@
     using type = Sub;
     using ToDec = IntToStr<10, typename Sub::Pfx>;
     // Addr + sep + 3 prefix chars
-    static constexpr std::size_t buf_size =
+    static inline constexpr std::size_t buf_size =
         ToStr<typename Sub::Addr>::buf_size + 1 + ToDec::buf_size;
 
     template <typename CharT>
diff --git a/include/stdplus/variant.hpp b/include/stdplus/variant.hpp
index 47a3016..57e0897 100644
--- a/include/stdplus/variant.hpp
+++ b/include/stdplus/variant.hpp
@@ -17,21 +17,21 @@
 template <template <typename, typename> typename Veq, typename T>
 struct CanVeq<Veq, T>
 {
-    static constexpr inline bool value = false;
+    static inline constexpr bool value = false;
 };
 
 template <template <typename, typename> typename Veq, typename T, typename V,
           typename... Vs>
 struct CanVeq<Veq, T, V, Vs...>
 {
-    static constexpr inline bool value = Veq<T, V>::value ||
+    static inline constexpr bool value = Veq<T, V>::value ||
                                          CanVeq<Veq, T, Vs...>::value;
 };
 
 template <typename T1, typename T2>
 struct VeqBase
 {
-    static constexpr inline bool value = false;
+    static inline constexpr bool value = false;
 
     constexpr bool operator()(const T1&, const T2&) const noexcept
     {
@@ -46,7 +46,7 @@
 template <typename T1, WeaklyEqualityComparableWith<T1> T2>
 struct VeqFuzzy<T1, T2>
 {
-    static constexpr inline bool value = true;
+    static inline constexpr bool value = true;
 
     constexpr bool operator()(const T1& lhs, const T2& rhs) const noexcept
     {
@@ -61,7 +61,7 @@
 template <typename T1, std::same_as<T1> T2>
 struct VeqStrict<T1, T2>
 {
-    static constexpr inline bool value = true;
+    static inline constexpr bool value = true;
 
     constexpr bool operator()(const T1& lhs, const T2& rhs) const noexcept
     {
diff --git a/include/stdplus/zstring_view.hpp b/include/stdplus/zstring_view.hpp
index 1a478cb..490e5e0 100644
--- a/include/stdplus/zstring_view.hpp
+++ b/include/stdplus/zstring_view.hpp
@@ -75,7 +75,7 @@
     using size_type = string_view_base::size_type;
     using difference_type = string_view_base::difference_type;
 
-    static constexpr size_type npos = string_view_base::npos;
+    static inline constexpr size_type npos = string_view_base::npos;
 
     template <typename T, size_type N>
     constexpr basic_zstring_view(T (&str)[N])
