diff --git a/elog-errors.hpp b/elog-errors.hpp
index ab3cadc..e215431 100644
--- a/elog-errors.hpp
+++ b/elog-errors.hpp
@@ -63,7 +63,7 @@
      */
     static constexpr auto str_short = "ESEL";
     using type = std::tuple<std::decay_t<decltype("ESEL=%s")>, const char*>;
-    explicit constexpr ESEL(const char* a) : _entry(entry("ESEL=%s", a)){};
+    explicit constexpr ESEL(const char* a) : _entry(entry("ESEL=%s", a)) {};
     type _entry;
 };
 } // namespace _Event
@@ -109,7 +109,7 @@
     static constexpr auto str_short = "PROCEDURE";
     using type = std::tuple<std::decay_t<decltype("PROCEDURE=%u")>, uint32_t>;
     explicit constexpr PROCEDURE(uint32_t a) :
-        _entry(entry("PROCEDURE=%u", a)){};
+        _entry(entry("PROCEDURE=%u", a)) {};
     type _entry;
 };
 } // namespace _Procedure
@@ -157,7 +157,7 @@
     using type =
         std::tuple<std::decay_t<decltype("CALLOUT_ERRNO=%d")>, int32_t>;
     explicit constexpr CALLOUT_ERRNO(int32_t a) :
-        _entry(entry("CALLOUT_ERRNO=%d", a)){};
+        _entry(entry("CALLOUT_ERRNO=%d", a)) {};
     type _entry;
 };
 struct CALLOUT_DEVICE_PATH
@@ -171,7 +171,7 @@
     using type = std::tuple<std::decay_t<decltype("CALLOUT_DEVICE_PATH=%s")>,
                             const char*>;
     explicit constexpr CALLOUT_DEVICE_PATH(const char* a) :
-        _entry(entry("CALLOUT_DEVICE_PATH=%s", a)){};
+        _entry(entry("CALLOUT_DEVICE_PATH=%s", a)) {};
     type _entry;
 };
 } // namespace _Device
@@ -220,7 +220,7 @@
     using type =
         std::tuple<std::decay_t<decltype("CALLOUT_GPIO_NUM=%u")>, uint32_t>;
     explicit constexpr CALLOUT_GPIO_NUM(uint32_t a) :
-        _entry(entry("CALLOUT_GPIO_NUM=%u", a)){};
+        _entry(entry("CALLOUT_GPIO_NUM=%u", a)) {};
     type _entry;
 };
 } // namespace _GPIO
@@ -272,7 +272,7 @@
     using type =
         std::tuple<std::decay_t<decltype("CALLOUT_IIC_BUS=%s")>, const char*>;
     explicit constexpr CALLOUT_IIC_BUS(const char* a) :
-        _entry(entry("CALLOUT_IIC_BUS=%s", a)){};
+        _entry(entry("CALLOUT_IIC_BUS=%s", a)) {};
     type _entry;
 };
 struct CALLOUT_IIC_ADDR
@@ -286,7 +286,7 @@
     using type =
         std::tuple<std::decay_t<decltype("CALLOUT_IIC_ADDR=0x%hx")>, uint16_t>;
     explicit constexpr CALLOUT_IIC_ADDR(uint16_t a) :
-        _entry(entry("CALLOUT_IIC_ADDR=0x%hx", a)){};
+        _entry(entry("CALLOUT_IIC_ADDR=0x%hx", a)) {};
     type _entry;
 };
 } // namespace _IIC
@@ -339,7 +339,7 @@
     using type = std::tuple<std::decay_t<decltype("CALLOUT_INVENTORY_PATH=%s")>,
                             const char*>;
     explicit constexpr CALLOUT_INVENTORY_PATH(const char* a) :
-        _entry(entry("CALLOUT_INVENTORY_PATH=%s", a)){};
+        _entry(entry("CALLOUT_INVENTORY_PATH=%s", a)) {};
     type _entry;
 };
 } // namespace _Inventory
@@ -389,7 +389,7 @@
         std::tuple<std::decay_t<decltype("CALLOUT_IPMI_SENSOR_NUM=%u")>,
                    uint32_t>;
     explicit constexpr CALLOUT_IPMI_SENSOR_NUM(uint32_t a) :
-        _entry(entry("CALLOUT_IPMI_SENSOR_NUM=%u", a)){};
+        _entry(entry("CALLOUT_IPMI_SENSOR_NUM=%u", a)) {};
     type _entry;
 };
 } // namespace _IPMISensor
@@ -436,7 +436,7 @@
      */
     static constexpr auto str_short = "ESEL";
     using type = std::tuple<std::decay_t<decltype("ESEL=%s")>, const char*>;
-    explicit constexpr ESEL(const char* a) : _entry(entry("ESEL=%s", a)){};
+    explicit constexpr ESEL(const char* a) : _entry(entry("ESEL=%s", a)) {};
     type _entry;
 };
 } // namespace _Event
@@ -482,7 +482,7 @@
      */
     static constexpr auto str_short = "ESEL";
     using type = std::tuple<std::decay_t<decltype("ESEL=%s")>, const char*>;
-    explicit constexpr ESEL(const char* a) : _entry(entry("ESEL=%s", a)){};
+    explicit constexpr ESEL(const char* a) : _entry(entry("ESEL=%s", a)) {};
     type _entry;
 };
 } // namespace _MaintenanceProcedure
