我知道新的C ++标准允许用户定义的文字,并且它们的生成可以在编译时完成。
然而,我对整个模板元编程领域都很陌生,我试图让一些例子继续下去,但仍然没有成功,因为这是我第一次接触这个特殊功能。
所以我想说我有一个字符串:
std::string tmp = "This is a test message";
我想在编译时使用以下方法对其进行加密:
std::string tmp = "This is a test message"_encrypt;
甚至有可能尝试尝试吗?
我目前正在使用VS2015,因此感谢任何帮助或反馈。
答案 0 :(得分:1)
甚至有可能尝试尝试吗?
是的,可能是 * 。 你可以预先计算并直接放在源代码中也可以由编译器在编译时完成。
但是,您无法使用PostCommand
。这不是文字类型。类似的东西:
std::string
将从不编译,因为 constexpr std::string tmp = "some string literal"
和std::string
通常没有std::basic_string
构造函数。
因此,您必须使用constexpr
作为元编程的输入;之后,您可以将其分配给const char []
注意:元编程有一些限制需要考虑:您无法访问许多其他工具,例如std::string
或new
,例如:您必须分配堆栈你的变量。
* 编辑:不完全使用UDL,如@ m.s。指出。实际上,您会收到指向malloc
s的指针和字符串的长度。这在const char
场景中非常严格,我怀疑是否有可能找到一种方法来处理该字符串。在“普通”元编程中,您可以使用一个常量表达式的大小,编译时加密是可能的。