On Friday, 10 June 2016 at 18:47:59 UTC, Joerg Joergonson wrote:
In any case, this is impossible. D has no such concept as
"compile-time-only" values, so any usage of a value risks
embedding it into the binary.
sure, it has.
template ParseData (string text) {
private static enum Key = "XXXyyyZZZ33322211\n";
private static enum TRet = "int data = 3;";
private static enum FRet = "int data = 4;";
static if (text.length >= Key.length) {
static if (text[0..Key.length] == Key)
enum ParseData = TRet;
else
enum ParseData = FRet;
} else {
enum ParseData = FRet;
}
}
void main () {
mixin(ParseData!(import("a")));
}
look, ma, no traces of our secret key in binary! and no traces of
`int data` declaration too!