这是我希望能够输入的内容:
class foo : public watchKeys<A, B, C> {}; //Or any list of keys
Boost::mpl 有序列,可以让你这样做,但我不想这样做:
class foo : public watchKeys<mpl::list<A, B, C> > {};
我不介意它内部“丑陋”或冗长,但我希望 watchKeys 最终使用的方式非常简单和直观。我也不知道 boost 是如何做到的,但这似乎是因为我和模板之间有一层宏。
我该怎么办?我不希望为每种类型的类型制作巨大的模板列表,但如果这是唯一的,那就是唯一的方法......
编辑:我已经相当确定没有办法做我想做的事(几乎,但你不能有可变数量的宏参数),但问题仍然在产生有用和信息丰富的答案。