考虑以下代码:
template<bool AddMembers> class MyClass
{
public:
void myFunction();
template<class = typename std::enable_if<AddMembers>::type> void addedFunction();
protected:
double myVariable;
/* SOMETHING */ addedVariable;
};
在这段代码中,模板参数AddMembers
允许在其为true
时向类中添加一个函数。为此,我们使用了std::enable_if
。
我的问题是:是否可能(也许通过一些巧妙的方式)对数据成员变量进行相同的操作?即MyClass<false>
将具有1个数据成员(myVariable
),而MyClass<true>
将具有2个数据成员(myVariable
和addedVariable
)?
template <bool AddMem = AddMembers> typename std::enable_if<AddMem>::type addedFunction();
将在AddMembers = false
时消除编译时错误。 - Hari