举例说明:
struct MyFunc {
template <size_t N>
void doIt() {
cout << N << endl;
}
};
template <typename Func>
struct Pass123ToTemplateFunc {
static void pass(Func f) {
f.doIt<123>(); // <-- Error on compile; is there a way to express this?
}
};
int main() {
Pass123ToTemplateFunc<MyFunc>::pass(MyFunc());
return 0;
}
这纯粹是出于对语法的好奇;语言中有没有一种方法可以在不将参数传递给 doIt
函数本身的情况下表达这一点?如果没有,那没什么大不了的,我已经很清楚可以优雅地解决它的方法,因此无需提供替代解决方案。 (换句话说,如果这是真的,我会接受“否”作为答案。:-P)
最佳答案
你必须告诉编译器 doIt
将是一个模板:
f.template doIt<123>();
关于c++ - 当对象类型是模板参数时,有没有办法将模板参数传递给对象上的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12848010/