C++ template
需求1
有一个模板类Class<T>,我希望可以根据T的具体性质,在实现Class<T>时走不同的函数
例如,我写好了一个SegmentTree<T,L>,如果T是Mergeable的子类,那么我可能要额外走一个pushUp方法;如果L是Lazytag的子类,我可能要额外走一个pushDown的方法
问题可以表述成:
if condition<T>:
do...(可能用到T这个类型的某些具体属性,e.g T.status)
else:
do...
问题麻烦之处在于使用到T.status
的地方,如果T被特化成为了一个不具备status属性的类型,就会出现编译错误
template<typename T, condition<T>>
struct function;
template<typename T>
struct function<T, true> {...}
template<typename T>
struct function<T, false> {...}