Template Defaultargumente
-
Ich habe folgenden Code:
#pragma once #include <exception> template <typename error_type> class DefaultException : public std::exception { public: DefaultException(error_type code) : code(code) {} virtual const char *what() const override = 0; error_type errorcode() const { return code; } private: error_type code; };#pragma once #include "DefaultException.h" enum class registry_error { ok, access_denied, not_found }; template <typename T = registry_error> class RegistryException : public DefaultException<T> { public: RegistryException(T code) : DefaultException<T>(code) {} const char *what() const override { switch (code) { case registry_error::ok: return "No error occurred"; case registry_error::access_denied: return "Access denied"; default: return "An unknown error occurred"; } } };Bei meiner RegistryException habe ich ja einen Default Template-Parameter angegeben. Wenn ich jetzt aber in meinem Code sowas machen will:
throw RegistryException(registry_error::access_denied);sagt der Compiler, dass ihm die Argumentliste für die Klassenvorlage fehlt.
Kann mir wer erklären wie ich das fixen kann?Gruß
-
throw RegistryException<>(registry_error::access_denied);