Манипуляция строкой во время компиляции с помощью шаблонов Variadic

Привет всем, я сейчас пытаюсь написать строковое шифрование во время компиляции (используя слова 'string' и 'encryption' довольно свободно) lib.

То, что я до сих пор, выглядит следующим образом:

// Cacluate narrow string length at compile-time
template <char... ArgsT>
struct CountArgs
{
 template <char... ArgsInnerT> struct Counter;

 template <char Cur, char... Tail>
 struct Counter<Cur, Tail...>
 {
  static unsigned long const Value = Counter<Tail...>::Value + 1;
 };

 template <char Cur>
 struct Counter<Cur>
 {
  static unsigned long const Value = 1;
 };

 static unsigned long const Value = Counter<ArgsT...>::Value;
};

// 'Encrypt' narrow string at compile-time
template <char... Chars>
struct EncryptCharsA
{
 static const char Value[CountArgs<Chars...>::Value + 1];
};

template<char... Chars>
char const EncryptCharsA<Chars...>::Value[CountArgs<Chars...>::Value + 1] =
{
 Chars...
};

Однако я не могу понять, как выполнять операции над символами, когда я расширяю их в статический массив. Я просто хотел бы выполнить простую операцию для каждого символа (например, '(((c ^ 0x12) ^ 0x55) + 1)', где c - символ).

Пуш в правильном направлении был бы очень признателен.

Спасибо всем.

Ответы на вопрос(2)

Ваш ответ на вопрос