当有:
template <typename Super>
class Whatever : public Super
{
...
};
Run Code Online (Sandbox Code Playgroud)
是否有可能在Whatever没有衍生出某些东西的情况下创造课程?
这是较轻的版本吗?
struct BlankType{};
Whatever<BlankType> w;
Run Code Online (Sandbox Code Playgroud)
////////////////////////////////////////
一些背景:
我将我的代码组合成Whatever上面的模板层.所以我可以这样做:
typedef Whatever<Whenever<Wherever<>>>> MyCombinedType
Run Code Online (Sandbox Code Playgroud)
实际上我不能.我要做
typedef Whatever<Whenever<Wherever<BlankType>>>> MyCombinedType
Run Code Online (Sandbox Code Playgroud)
并且类型也变为BlankType.我无法做出Wherever"不可剥夺的",因为当我做的时候
typedef Whatever<Whenever<>>> MyCombinedType
Run Code Online (Sandbox Code Playgroud)
问题会再次出现......
如果要创建Whatever非派生类的类,可以按如下方式定义其规范:
class BlankType {};
template<typename T = BlankType> class Whatever : public T {};
template<> class Whatever<BlankType> {};
Run Code Online (Sandbox Code Playgroud)