static const Base::Names names = { { 0, "a" }, { 1, "b" }, { 2,"c" }};
#include <map>
#include <string>
#include <type_traits>
template <
class SubClass,
typename EnumType,
bool fastStringConvert = true
>
class SmartEnum
{
public:
typename SFINAEPostponer = EnumType,
typename = typename std::enable_if<fastStringConvert, void>::type
explicit operator const std::string&() const
auto name = SubClass::names().find((int)value);
if (name != SubClass::names().end())
return name->second;
}
else
static const std::string na("n.a.");
return na;
typename = typename std::enable_if<!fastStringConvert, void>::type
explicit operator const std::string() const
g++