我有一个奇怪的C ++问题。
如果我有以下代码:
template<int p1, int p2> class A {
// SOME STUFF
};
template<int N> class B {
// SOME STUFF
template<int p1, int p2> A<p1,p2> func() {
A<p1,p2> a(something);
return a;
};
现在主要是,我想访问func():
int main(void) {
B<12> b;
b.func<6,2>();
}
由于某些原因,我希望使用以下代码完全相同的行为:
int main(void) {
B<12> b;
b(6,2);
}
当然,理论上不可能,因为模板值p1和p2必须在编译时解析,因此它们不能作为函数参数。因此尝试重载&#34; operator()&#34;是没用的。在B班。
但是,有没有办法像别名一样,这意味着在我的代码中,行:
b(x,y);
刚刚被替换为:
b.func<x,y>;
在编译之前尝试解析模板?就像一种特定于B类的宏?
提前感谢您的回答,
本杰明。