Я пишу класс в TMP для выполнения базовой обработки строк. Строка представлена в виде вариационного шаблона класса символов. Я хочу проверить, являются ли две строки равными и, если они есть, имеют связанный тип, но я не знаю, как бы я мог проверить, равны ли два символа во время компиляции. Мой текущий код выглядит следующим образом, но не скомпилирован по понятным причинам.Соответствующие переменные в шаблоне метапрограммирования C++
template <typename T, char firstChar, char... Chrs>
class NamedType
{
public:
typedef T Type;
template <char otherFirst, char... OtherChrs>
class TypeIfMatch
{
};
template <firstChar, char... OtherChrs>
class TypeIfMatch
{
public:
typedef NamedType<T, Chrs>::TypeIfMatch<OtherChars>::type type;
};
template <>
class TypeIfMatch
{
public:
typedef Type type;
};
static const char name[sizeof...(Chrs) + 1];
};
NamedType :: имя Const символ шаблона [SizeOf ... (ХР) +1] = {... ХР, '\ 0'};