我有一组非正交的策略,它们都实现了一个通用的命名方法,策略添加了安全检查.我希望用户能够组合策略以允许更复杂的验证,而无需手动为每个组合案例创建策略.我的方法是创建一个新的策略类来组合其他人.
下面的简化示例将C显示为组合类,此处将方法ID组合在一起.当在C上调用id时,预期的结果是顺序调用每个基类的id.
#include <iostream>
using namespace std;
struct A
{
void id() { cout << "A ";}
};
struct B
{
void id() { cout << "B ";}
};
template<class A, class... As>
struct C : public A, public As...
{
void id()
{
A::id();
As...::id(); // This line does not work, it is illustrative.
}
};
int main()
{
C<A, B> c;
c.id();
//expected: result A B
}
Run Code Online (Sandbox Code Playgroud)
问题是:是否有可能扩展为...以某种方式这样做而不使用递归方法,只使用...运算符?