What is wrong with deducing N template parameter in the code below?
enum class Level
{
Debug,
Trace,
Info,
Action,
Warning,
Error
};
template <class Enum, size_t N>
const char* enumValueToString(Enum val, const char* names[N])
{
return names[static_cast<std::underlying_type_t<Enum>>(val)];
}
const char* m_logLevels[] = { "debug", "trace", "info", "action", "warning", "error" };
const char* logLevelToString(Level t)
{
return enumValueToString(t, m_logLevels);
}
MSVC compiler error:
error C2784: 'const char *`anonymous-namespace'::enumValueToString(Enum,const char *[N])': could not deduce template argument for 'const char *[N]' from 'const char *[6]'