gpt4 book ai didi

c++ - 在 C++ 中扩展模板参数的名称

转载 作者:行者123 更新时间:2023-11-28 06:27:58 24 4
gpt4 key购买 nike

如果我有一个函数,例如:

template <class T>
T myFunc(){
return T_run();
}

所以如果我调用 myFunc<int>() ,它应该在内部调用 int_run()。如果我调用 myFunc<MyClass>() ,它应该在内部调用 MyClass_run()。

这需要通过用模板参数的名称替换 T 来扩展 T_run。

这在 C++ 中可能吗?

谢谢,

亚什

最佳答案

您不能像在 C++ 中那样执行任意函数名替换。您可以做的是在函数模板上提供特化,如下所示:

template <class T>
T myFunc();

template <>
int myFunc<int>() { return 3; }

template <>
MyClass myFunc<MyClass>() { return MyClass(); }

void foo() {
int a = myFunc<int>();
MyClass b = myFunc<MyClass>();
}

关于c++ - 在 C++ 中扩展模板参数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28191137/

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