C++ 模板C++;使用默认模板参数初始化

C++ 模板C++;使用默认模板参数初始化,c++,templates,default,C++,Templates,Default,我有一个通用类模板MyClass,并希望根据enType值进行专门化impl。问题是使用基于enType值的ServiceCreate的正确语法是什么 template <enum enType, typename ServiceCreator = CServiceFactory<enum enType>> class MyClass { public: MyClass(const Configuration& cfg) {} public: b

我有一个通用类模板MyClass,并希望根据enType值进行专门化impl。问题是使用基于enType值的ServiceCreate的正确语法是什么

template <enum enType, typename ServiceCreator = CServiceFactory<enum enType>>
class MyClass 
{
public:
    MyClass(const Configuration& cfg) {}
public:
    bool init()  { return false; }
    bool start()  { throwException(); }
    void stop()  { throwException(); }
private:
    void throwException() const { THROW(Exception, "invalid/unsupported mode"); }
};

// I need a specialization impl, so which one of the following 3 possible ways? or all are wrong?
template <typename ServiceCreator>
class MyClass<enType::eCase1> 
{
public:
    MyClass(const CConfiguration& cfg) {
        ServiceCreator(cfg); // it will create something for me by using CServiceFactory<eCase1>
    }
};

template <>
class MyClass<enType::eCase1> 
{
public:
    MyClass(const CConfiguration& cfg) {
        ServiceCreator(cfg); // it will create something for me by using CServiceFactory<eCase1>
    }
};

template <>
class MyClass<enType::eCase1, ServiceCreator<enType::eCase1> 
{
public:
    MyClass(const CConfiguration& cfg) {
        ServiceCreator(cfg); // it will create something for me by using CServiceFactory<eCase1>
    }
};


模板
类MyClass
{
公众:
MyClass(const配置&cfg){}
公众:
bool init(){return false;}
bool start(){throweexception();}
void stop(){throweexception();}
私人:
void throwException()常量{THROW(异常,“无效/不支持的模式”);}
};
//我需要一个专门化impl,那么以下三种可能的方法中的哪一种?还是一切都错了?
模板
类MyClass
{
公众:
MyClass(常量配置和cfg){
ServiceCreator(cfg);//它将使用CServiceFactory为我创建一些东西
}
};
模板
类MyClass
{
公众:
MyClass(常量配置和cfg){
ServiceCreator(cfg);//它将使用CServiceFactory为我创建一些东西
}
};
模板

班级我的班级那是什么?希望我能尽快打勾。