#if !defined(USE_MANUAL_TYPENAMES)
#	error "Only usable when USE_MANUAL_TYPENAMES is defined"
#endif

namespace dk {
	template<> constexpr inline const char* manual_type_name<bool>() { return "bool"; }
	template<> constexpr inline const char* manual_type_name<float>() { return "float"; }
	template<> constexpr inline const char* manual_type_name<double>() { return "double"; }
	template<> constexpr inline const char* manual_type_name<long double>() { return "long double"; }
	template<> constexpr inline const char* manual_type_name<uint8_t>() { return "uint8_t"; }
	template<> constexpr inline const char* manual_type_name<uint16_t>() { return "uint16_t"; }
	template<> constexpr inline const char* manual_type_name<uint32_t>() { return "uint32_t"; }
	template<> constexpr inline const char* manual_type_name<uint64_t>() { return "uint64_t"; }
	template<> constexpr inline const char* manual_type_name<int8_t>() { return "int8_t"; }
	template<> constexpr inline const char* manual_type_name<int16_t>() { return "int16_t"; }
	template<> constexpr inline const char* manual_type_name<int32_t>() { return "int32_t"; }
	template<> constexpr inline const char* manual_type_name<int64_t>() { return "int64_t"; }
	template<> constexpr inline const char* manual_type_name<wchar_t>() { return "wchar_t"; }
	template<> constexpr inline const char* manual_type_name<char16_t>() { return "char16_t"; }
	template<> constexpr inline const char* manual_type_name<char32_t>() { return "char32_t"; }
} //namespace dk
