Hola a todos, actualmente estoy tratando de escribir un cifrado de cadena en tiempo de compilación (utilizando las palabras 'cadena' y 'encriptación' bastante libremente) lib.Manipulación 'cadena' en tiempo de compilación con plantillas variables
Lo que tengo hasta ahora es la siguiente:
// 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...
};
sin embargo no puedo encontrar la manera de realizar operaciones en los personajes como lo expandirlas en la matriz estática. Me gustaría ejecutar una operación simple en cada carácter (por ejemplo, '((c^0x12)^0x55) + 1)' donde c es el personaje).
Un empujón en la dirección correcta sería muy apreciado.
Gracias a todos.
Podría dar una ejemplo de cómo le gustaría usar esto con las funciones dadas arriba? – David
char const * const pFooEnc = EncryptCharsA <'F','o','o'> :: Valor; – RaptorFactor