一些c++资源
Date: 2019/12/11 Tags: c++
template programing example
namespace detail {
template<typename B, typename T>
struct Clearer {
T& self;
Clearer(T& self) : self(self) {}
~Clearer() {
clear(self);
}
void clear(std::true_type) { static_cast<B&>(self).clear(); }
void clear(std::false_type) {}
void clear() {
clear(std::is_base_of<B, T>{});
}
};
}