半小时前我发现了可变参数模板参数,现在我完全迷上了。
我有一个微控制器输出引脚的基于静态类的抽象。我想将多个输出引脚分组,以便我可以将它们作为一个引脚处理。下面的代码有效,但我认为我应该能够以 0 参数而不是 1 结束递归。
template< typename pin, typename... tail_args >
class tee {
public:
typedef tee< tail_args... > tail;
static void set( bool b ){
pin::set( b );
tail::set( b );
}
};
template< typename pin >
class tee< pin > {
public:
static void set( bool b ){
pin::set( b );
}
};
我试过这个,但编译器(gcc)似乎没有考虑到它:
template<>
class tee<> : public pin_output {
public:
static void set( bool b ){}
};
错误信息很长,但它本质上说没有 tee<>。我的 tee<> 有问题还是不能结束递归