diff --git a/include-dl/stdplus/dl.hpp b/include-dl/stdplus/dl.hpp
index 4c653da..223af24 100644
--- a/include-dl/stdplus/dl.hpp
+++ b/include-dl/stdplus/dl.hpp
@@ -26,11 +26,11 @@
 class DlOpenFlags : public stdplus::BitFlags<DlOpenFlag>
 {
   public:
-    inline DlOpenFlags(DlOpenType type) :
+    constexpr DlOpenFlags(DlOpenType type) :
         BitFlags<DlOpenFlag>(std::to_underlying(type))
     {}
 
-    inline DlOpenFlags(BitFlags<DlOpenFlag> flags) :
+    constexpr DlOpenFlags(BitFlags<DlOpenFlag> flags) :
         BitFlags<DlOpenFlag>(flags)
     {}
 };
diff --git a/include-fd/stdplus/fd/create.hpp b/include-fd/stdplus/fd/create.hpp
index 81ebfde..9cdeba4 100644
--- a/include-fd/stdplus/fd/create.hpp
+++ b/include-fd/stdplus/fd/create.hpp
@@ -44,11 +44,11 @@
 class OpenFlags : public BitFlags<OpenFlag>
 {
   public:
-    inline OpenFlags(OpenAccess access) :
+    constexpr OpenFlags(OpenAccess access) :
         BitFlags<OpenFlag>(std::to_underlying(access))
     {}
 
-    inline OpenFlags(BitFlags<OpenFlag> flags) : BitFlags<OpenFlag>(flags) {}
+    constexpr OpenFlags(BitFlags<OpenFlag> flags) : BitFlags<OpenFlag>(flags) {}
 };
 
 DupableFd open(const_zstring pathname, OpenFlags flags, mode_t mode = 0);
diff --git a/include-fd/stdplus/fd/intf.hpp b/include-fd/stdplus/fd/intf.hpp
index 7f448c8..ced525b 100644
--- a/include-fd/stdplus/fd/intf.hpp
+++ b/include-fd/stdplus/fd/intf.hpp
@@ -104,11 +104,11 @@
 class MMapFlags : public BitFlags<MMapFlag>
 {
   public:
-    inline MMapFlags(MMapAccess access) :
+    constexpr MMapFlags(MMapAccess access) :
         BitFlags<MMapFlag>(std::to_underlying(access))
     {}
 
-    inline MMapFlags(BitFlags<MMapFlag> flags) : BitFlags<MMapFlag>(flags) {}
+    constexpr MMapFlags(BitFlags<MMapFlag> flags) : BitFlags<MMapFlag>(flags) {}
 };
 
 class MMap;
diff --git a/include/stdplus/flags.hpp b/include/stdplus/flags.hpp
index 4fdd511..faa3a2f 100644
--- a/include/stdplus/flags.hpp
+++ b/include/stdplus/flags.hpp
@@ -15,32 +15,32 @@
     using type = T;
     using underlying = I;
 
-    inline BitFlags() noexcept : val(0) {}
-    explicit inline BitFlags(underlying val) noexcept : val(val) {}
+    constexpr BitFlags() noexcept : val(0) {}
+    explicit constexpr BitFlags(underlying val) noexcept : val(val) {}
 
-    inline BitFlags& set(type flag) & noexcept
+    constexpr BitFlags& set(type flag) & noexcept
     {
         val |= std::to_underlying(flag);
         return *this;
     }
-    inline BitFlags&& set(type flag) && noexcept
+    constexpr BitFlags&& set(type flag) && noexcept
     {
         val |= std::to_underlying(flag);
         return std::move(*this);
     }
 
-    inline BitFlags& unset(type flag) & noexcept
+    constexpr BitFlags& unset(type flag) & noexcept
     {
         val &= ~std::to_underlying(flag);
         return *this;
     }
-    inline BitFlags&& unset(type flag) && noexcept
+    constexpr BitFlags&& unset(type flag) && noexcept
     {
         val &= ~std::to_underlying(flag);
         return std::move(*this);
     }
 
-    explicit inline operator underlying() const noexcept
+    explicit constexpr operator underlying() const noexcept
     {
         return val;
     }
