【发布时间】:2023-02-08 19:02:13
【问题描述】:
所以我发现各种文章和帖子都说无法将 typename 转换为 string 但我还没有找到相反的方法。我有一个具有专业化功能的template:
template <typename T>
void foo(T sth) {}
template <>
void foo<int>(int sth) {}
...
我正在读取一个这样构造的文件:
int 20
double 12.492
string word
有没有办法根据文件的内容调用foo()的正确特化?
【问题讨论】:
-
模板是编译时构造,您不能在运行时实例化或选择模板特化
-
if (std::compare(sType)=="string" {...} else if (std::compare(sType)=="int") {...} -
我明白了,我会编辑那个有意义的
-
“无法将类型名转换为字符串”也许没有标准的,但有一些足够便携的,比如从
typename <typename T> const char *foo() {#ifdef _MSC_VER return __FUNCSIG__; #else return __PRETTY_FUNCTION__;}返回的字符串中取出名称。