gpt4 book ai didi

c++ - 模板实例化时typeid()

转载 作者:行者123 更新时间:2023-11-28 07:59:08 24 4
gpt4 key购买 nike

如何在模板实例化时找到模板参数的类型?例如,我希望根据参数将以下模板实例化为 2 个不同的函数:

template <typename T> void test(T a) {
if-T-is-int {
doSomethingWithInt(a);
} else {
doSomethingElse(a);
}
}

当用 int 实例化时,生成的函数将是:

void test(int a) { doSomethingWithInt(a); }

例如,当用 float 实例化时,它将是:

void test(float a) { doSomethingElse(a); }

最佳答案

在您的情况下,听起来您所需要的只是 intfloat 的两个重载版本。没有描述其他类型的行为,因此不需要模板。

void test (int i) {
doSomethingWithInt(i);
}

void test (float f) {
doSomethingElse(f);
}

如果您确实需要其他类型的大小写,请添加一个普通的模板化版本。特定重载优先。例如,see here .

关于c++ - 模板实例化时typeid(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11963035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com