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> {...}