什么是类型字符串(模板元编程),它有什么作用?

What is a type string (template meta-programming) and what does it do?

我听说过一些关于什么是类型字符串的信息:编译时字符串被强制转换为用于定义或比较的类型。如果我的逻辑是正确的,这意味着我可以轻松地动态创建和比较类型;也许我什至可以找到一种方法来使用它来将变体缩小回具体类型。我没听错吗?

从你的描述中不清楚你是否正确,至少如果我们谈论的是实现的类型字符串 here

类型字符串只是编译时字符串:它们可以通过模板元编程使用/检查。例如,您可以有一个将类型级字符串转换为大写的模板,并且转换将在编译时完成。

但是,您不能一般地将任何类型字符串转换为其引用的类型,也不能将任何类型转换为类型字符串。因此,例如,给定 typdef typestring_is("int") int_typestring,没有从 int_typestring 获取类型 int 的通用方法。相反的情况通常也是不可能的:您不能仅从 int 类型中获得 int_typestring 一般情况下(没有办法编写 to_type_string<T> 类型字符串 returns 的通用模板对于给定的类型 T,它适用于所有类型 T)。