diff --git a/include/stdplus/net/addr/ip.hpp b/include/stdplus/net/addr/ip.hpp
index dae3c15..711d3d5 100644
--- a/include/stdplus/net/addr/ip.hpp
+++ b/include/stdplus/net/addr/ip.hpp
@@ -533,21 +533,21 @@
 {
 
 template <detail::CompileIn4Addr Str>
-constexpr auto operator"" _ip4() noexcept
+constexpr auto operator""_ip4() noexcept
 {
     static_assert(Str.valid, "stdplus::In4Addr");
     return Str.addr;
 }
 
 template <detail::CompileIn6Addr Str>
-constexpr auto operator"" _ip6() noexcept
+constexpr auto operator""_ip6() noexcept
 {
     static_assert(Str.valid, "stdplus::In6Addr");
     return Str.addr;
 }
 
 template <detail::CompileInAnyAddr Str>
-constexpr auto operator"" _ip() noexcept
+constexpr auto operator""_ip() noexcept
 {
     static_assert(Str.valid, "stdplus::InAnyAddr");
     return Str.v4 ? InAnyAddr(Str.u.addr4) : InAnyAddr(Str.u.addr6);
diff --git a/include/stdplus/net/addr/subnet.hpp b/include/stdplus/net/addr/subnet.hpp
index a28b3f6..b5e5731 100644
--- a/include/stdplus/net/addr/subnet.hpp
+++ b/include/stdplus/net/addr/subnet.hpp
@@ -330,21 +330,21 @@
 {
 
 template <detail::CompileSubnet4 Str>
-constexpr auto operator"" _sub4() noexcept
+constexpr auto operator""_sub4() noexcept
 {
     static_assert(Str.valid, "stdplus::Subnet4");
     return Subnet4(Str.addr, Str.pfx);
 }
 
 template <detail::CompileSubnet6 Str>
-constexpr auto operator"" _sub6() noexcept
+constexpr auto operator""_sub6() noexcept
 {
     static_assert(Str.valid, "stdplus::Subnet6");
     return Subnet6(Str.addr, Str.pfx);
 }
 
 template <detail::CompileSubnetAny Str>
-constexpr auto operator"" _sub() noexcept
+constexpr auto operator""_sub() noexcept
 {
     static_assert(Str.valid, "stdplus::SubnetAny");
     return Str.v4 ? SubnetAny(Str.u.addr4, Str.pfx)
diff --git a/include/stdplus/zstring_view.hpp b/include/stdplus/zstring_view.hpp
index 4be31c3..809c2a5 100644
--- a/include/stdplus/zstring_view.hpp
+++ b/include/stdplus/zstring_view.hpp
@@ -309,7 +309,7 @@
 inline namespace zstring_view_literals
 {
 template <detail::compile_zstring_view Str>
-constexpr auto operator"" _zsv() noexcept
+constexpr auto operator""_zsv() noexcept
 {
     static_assert(Str.valid, "stdplus::zstring_view");
     return Str.getzsv();
diff --git a/meson.build b/meson.build
index 08de909..49d7575 100644
--- a/meson.build
+++ b/meson.build
@@ -5,6 +5,7 @@
     meson_version: '>=1.1.1',
     default_options: [
         'warning_level=3',
+        'werror=true',
         'cpp_std=c++23',
         'tests=' + (meson.is_subproject() ? 'disabled' : 'auto'),
         'examples=' + (meson.is_subproject() ? 'false' : 'true'),
diff --git a/test/fd/fmt.cpp b/test/fd/fmt.cpp
index bdac7a4..cf4a319 100644
--- a/test/fd/fmt.cpp
+++ b/test/fd/fmt.cpp
@@ -27,7 +27,7 @@
         buf.flush();
 
         EXPECT_EQ(6, fd.lseek(0, Whence::Cur));
-        buf.append(FMT_COMPILE("{}"), std::string(2050, 'a'));
+        buf.append("{}", std::string(2050, 'a'));
         EXPECT_EQ(6, fd.lseek(0, Whence::Cur));
         buf.append("{}", std::string(2050, 'a'));
         EXPECT_EQ(4106, fd.lseek(0, Whence::Cur));
diff --git a/test/io_uring.cpp b/test/io_uring.cpp
index 7a646e2..54b9cef 100644
--- a/test/io_uring.cpp
+++ b/test/io_uring.cpp
@@ -264,9 +264,11 @@
     testFdWrite(*fh, IOSQE_FIXED_FILE);
 
     // Without registration we should only be able to write to the regular fd
+    int old_fd = *fh;
     fh.reset();
     testFdWrite(STDERR_FILENO, 0);
-    testFdWrite(*fh, IOSQE_FIXED_FILE, -EBADF);
+    testFdWrite(STDOUT_FILENO, IOSQE_FIXED_FILE, -EBADF);
+    testFdWrite(old_fd, IOSQE_FIXED_FILE, -EBADF);
 
     std::vector<IoUring::FileHandle> fhs;
     EXPECT_LT(ring.getFiles().size(), 9);
