我有一个经典的抽象工厂实现,我想提供一个可选的构造函数参数。使用可变参数模板,Thema的答案似乎很简单,但是我坚持不支持它的VS2010。所以至少有一个这样的论点:
template <class IFTYPE, typename IDTYPE=std::string, typename Args=void >
class AbstractFactory {
typdef std::shared_ptr<IFTYPE> (*CreateFunc)(Args);
public:
std::shared_ptr<IFTYPE> create( IDTYPE id, Args args ) {
return nullptr;
}
};
问题是我无法处理create
的{{1}}方法中的默认类型。由于我无法命名参数void
。
如何在保留不同参数类型的选项的情况下解决此问题?部分专业化不起作用,因为它会更改void
的签名。我在这里有什么选择?
谢谢...