class Name : public Base { \
public: \
Name() = default; \
explicit Name(std::string message) : Base(std::move(message)) {} \
Name(std::optional<int64_t> errorCode, std::string message) \
: Base(errorCode, std::move(message)) {} \
explicit Name(const std::exception& cause) : Base(cause) {} \
Name(std::string message, const std::exception& cause) \
: Base(std::move(message), cause) {} \
Name(std::optional<int64_t> errorCode, std::string message, \
const std::exception& cause) \
: Base(errorCode, std::move(message), cause) {} \
}