diff --git a/elog-errors.hpp b/elog-errors.hpp
index 269587e..6632a27 100644
--- a/elog-errors.hpp
+++ b/elog-errors.hpp
@@ -1460,7 +1460,7 @@
      */
     static constexpr auto str_short = "RAIL";
     using type = std::tuple<std::decay_t<decltype("RAIL=%d")>, uint16_t>;
-    explicit constexpr RAIL(uint16_t a) : _entry(entry("RAIL=%d", a)){};
+    explicit constexpr RAIL(uint16_t a) : _entry(entry("RAIL=%d", a)) {};
     type _entry;
 };
 struct RAIL_NAME
@@ -1474,7 +1474,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAIL_NAME=%s")>, const char*>;
     explicit constexpr RAIL_NAME(const char* a) :
-        _entry(entry("RAIL_NAME=%s", a)){};
+        _entry(entry("RAIL_NAME=%s", a)) {};
     type _entry;
 };
 struct RAW_STATUS
@@ -1488,7 +1488,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSequencerVoltageFault
@@ -1538,7 +1538,7 @@
     static constexpr auto str_short = "INPUT_NUM";
     using type = std::tuple<std::decay_t<decltype("INPUT_NUM=%d")>, uint16_t>;
     explicit constexpr INPUT_NUM(uint16_t a) :
-        _entry(entry("INPUT_NUM=%d", a)){};
+        _entry(entry("INPUT_NUM=%d", a)) {};
     type _entry;
 };
 struct INPUT_NAME
@@ -1552,7 +1552,7 @@
     using type =
         std::tuple<std::decay_t<decltype("INPUT_NAME=%s")>, const char*>;
     explicit constexpr INPUT_NAME(const char* a) :
-        _entry(entry("INPUT_NAME=%s", a)){};
+        _entry(entry("INPUT_NAME=%s", a)) {};
     type _entry;
 };
 struct RAW_STATUS
@@ -1566,7 +1566,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSequencerPGOODFault
@@ -1617,7 +1617,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSequencerFault
@@ -1666,7 +1666,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
@@ -1680,7 +1680,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
@@ -1729,7 +1729,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
@@ -1781,7 +1781,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
@@ -1795,7 +1795,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
@@ -1848,7 +1848,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
@@ -1898,7 +1898,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
@@ -1947,7 +1947,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSupplyInputFault
@@ -1998,7 +1998,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSupplyShouldBeOn
@@ -2049,7 +2049,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSupplyOutputOvercurrent
@@ -2100,7 +2100,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSupplyOutputOvervoltage
@@ -2151,7 +2151,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSupplyFanFault
@@ -2202,7 +2202,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _PowerSupplyTemperatureFault
@@ -2253,7 +2253,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _GPUPowerFault
@@ -2304,7 +2304,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _GPUOverTemp
@@ -2355,7 +2355,7 @@
     using type =
         std::tuple<std::decay_t<decltype("RAW_STATUS=%s")>, const char*>;
     explicit constexpr RAW_STATUS(const char* a) :
-        _entry(entry("RAW_STATUS=%s", a)){};
+        _entry(entry("RAW_STATUS=%s", a)) {};
     type _entry;
 };
 } // namespace _MemoryPowerFault
