Hej wszystkim, obecnie próbuję napisać szyfrowanie ciągów kompilacji (używając luźno słów "string" i "encryption") lib.Skompilowanie manipulacji "ciągiem" przy użyciu szablonów zmiennych
Co mam tak daleko jest w następujący sposób:
// 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...
};
Jednak nie mogę dowiedzieć się, jak wykonywać operacje na bohaterów jak rozwinąć je w statycznej tablicy. Chciałbym wykonać prostą operację na każdym znaku (np. ((((C^0x12)^0x55) + 1) 'gdzie c jest znakiem).
Pchnięcie we właściwym kierunku zostanie bardzo docenione.
Dzięki wszystkim.
mógłbyś dać przykład, w jaki sposób chciałbyś użyć tego z funkcjami podanymi powyżej? – David
char const * const pFooEnc = EncryptCharsA <'F','o','o'> :: Wartość; – RaptorFactor