Kompilierzeit 'String' Manipulation mit Variadic Templates

8

Hey alle, ich versuche gerade, eine Kompilierzeitstringverschlüsselung zu schreiben (mit den Wörtern 'string' und 'encryption' ganz locker) lib.

Was ich bisher habe, ist wie folgt:

%Vor%

Ich kann jedoch nicht herausfinden, wie man Operationen an den Zeichen durchführt, wenn ich sie in das statische Array expandiere. Ich möchte nur eine einfache Operation für jedes Zeichen ausführen (z. B. '(((^ 0x12) ^ 0x55) + 1)' wobei c das Zeichen ist.

Ein Schub in die richtige Richtung wäre sehr willkommen.

Danke allen.

    
RaptorFactor 16.08.2010, 11:42
quelle

2 Antworten

4

Wenn Sie nur ein Zeichen auf einmal bearbeiten möchten, ist es einfach:

%Vor%

Beachten Sie, dass CountArgs redundant ist (dafür steht sizeof... ) und dass dies elementweise Transformation der Elemente in einem Parameter-Pack .

Um die Umwandlung von vorherigen Ergebnissen abhängig zu machen, wäre eine Option, die Zeichen nacheinander einzeln zu verwenden und daraus schrittweise eine neue Vorlage zu erstellen:

%Vor%     
Georg Fritzsche 16.08.2010, 19:38
quelle
1

Wenn ich verstehe, was Sie richtig machen wollen (tatsächlich erstellen Sie ein Array zur Kompilierzeit), denke ich, dass variadische Vorlagen nicht ausreichen und Sie auf constexpr .

Wenn Sie jedoch kein aktuelles Array benötigen und stattdessen etwas wie tuple 's get<I> verwenden können, dann ist es möglich (Sie können dann ein Array char zur Laufzeit erstellen).

    
Motti 16.08.2010 13:05
quelle