用另一个"虚拟"替换模板化的函数调用。功能调用

时间:2017-11-03 11:42:47

标签: c++ templates macros

我有一个奇怪的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类的宏?

提前感谢您的回答,

本杰明。

0 个答案:

没有答案