什么是类型字符串(模板元编程),它有什么作用?
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)。
我听说过一些关于什么是类型字符串的信息:编译时字符串被强制转换为用于定义或比较的类型。如果我的逻辑是正确的,这意味着我可以轻松地动态创建和比较类型;也许我什至可以找到一种方法来使用它来将变体缩小回具体类型。我没听错吗?
从你的描述中不清楚你是否正确,至少如果我们谈论的是实现的类型字符串 here。
类型字符串只是编译时字符串:它们可以通过模板元编程使用/检查。例如,您可以有一个将类型级字符串转换为大写的模板,并且转换将在编译时完成。
但是,您不能一般地将任何类型字符串转换为其引用的类型,也不能将任何类型转换为类型字符串。因此,例如,给定 typdef typestring_is("int") int_typestring
,没有从 int_typestring
获取类型 int
的通用方法。相反的情况通常也是不可能的:您不能仅从 int
类型中获得 int_typestring
一般情况下(没有办法编写 to_type_string<T>
类型字符串 returns 的通用模板对于给定的类型 T,它适用于所有类型 T)。