今天我遇到了一个可怕的问题。我一直在研究一个使用可变参数模板的类的整个框架。事实证明,我正在使用的那个人使用 Visual Studio,它还不支持可变参数模板。
我尝试通过使用宏无缝地移植该功能,但经过长时间的工作,它看起来似乎是不可能的。问题是模板的参数数量可能从零变化到四个(或可变参数模板的无穷大)。
即使我的宏是制作的,并以这样的方式使用:
template<>
Signal<void ()>
{
// My class
};
或者
template<typename param1>
Signal<void (param1)>
{
// My class
};
但问题是它看起来不适用于 gcc(所以我假设它也不适用于 vc)。
标头没有显示任何错误,但是如果我尝试像这样实例化类:
Signal<> mySignal;
我收到这些错误:
error: wrong number of template arguments (0, should be 1)
由于我没有找到有关该主题的信息,因此我至少想知道我正在尝试的方法是否可行?或者如果我真的要再次编写数百行代码,因为微软认为可变参数模板不够重要?